php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 20-06-2007, 02:31
Truncate
 Registrierter Benutzer
Links : Onlinestatus : Truncate ist offline
Registriert seit: Nov 2005
Beiträge: 419
Truncate kann nur auf Besserung hoffen
Standard TinyURL.com nachprogrammieren

Hallo,

weiß jemand welches System hinter TinyURL.com steckt?

Die verwandeln eine URL in einen gerade mal 6-stelligen Code, also eher nichts mit md5() sondern eine andere ID-Generierung.
Mit Zitat antworten
  #2 (permalink)  
Alt 20-06-2007, 02:36
Blackgreetz
 PHP Junior
Links : Onlinestatus : Blackgreetz ist offline
Registriert seit: Oct 2005
Beiträge: 901
Blackgreetz ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Warum nicht md5?...

substr(0,6,md5()) und fertig..
das ganze speichern die in der datenbank und ja...

<<< denk ich mir jetzt alles so...ka genau^^
Mit Zitat antworten
  #3 (permalink)  
Alt 20-06-2007, 02:44
Truncate
 Registrierter Benutzer
Links : Onlinestatus : Truncate ist offline
Registriert seit: Nov 2005
Beiträge: 419
Truncate kann nur auf Besserung hoffen
Standard

Das würde doch aber zu Überschneidungen führen... kann mir nicht vorstellen, dass es ein gekürzter MD5()-Link sein soll...
Mit Zitat antworten
  #4 (permalink)  
Alt 20-06-2007, 03:00
MelloPie
 PHP Master
Links : Onlinestatus : MelloPie ist offline
Registriert seit: Jan 2002
Ort: Hessen
Beiträge: 4.380
MelloPie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

wo is das Problem?
die basteln sich irgendwas zusammen und speichern das in ner DB ab...
6 Zeichen lang und unique halten fertig
bei nur Buchstaben ohne auf gross/klein zu achten und ziffern hat man 36^6 (2176782336) möglichkeiten
__________________
Beantworte nie Threads mit mehr als 15 followups...
Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25
Mit Zitat antworten
  #5 (permalink)  
Alt 20-06-2007, 03:04
MelloPie
 PHP Master
Links : Onlinestatus : MelloPie ist offline
Registriert seit: Jan 2002
Ort: Hessen
Beiträge: 4.380
MelloPie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ach und wenn die paar Möglichkeiten aufgebraucht sind kann man sicher auf 7 stellen gehen :-)
__________________
Beantworte nie Threads mit mehr als 15 followups...
Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25
Mit Zitat antworten
  #6 (permalink)  
Alt 20-06-2007, 19:18
prego
 PHP Senior
Links : Onlinestatus : prego ist offline
Registriert seit: May 2005
Ort: Herborn
Beiträge: 1.609
prego ist zur Zeit noch ein unbeschriebenes Blatt
Standard

http://de.php.net/uniqid
Mit Zitat antworten
  #7 (permalink)  
Alt 21-06-2007, 12:00
frankburian
 Guest
frankburian
Beiträge: n/a
Standard

;O)

das ist eine eindeutige zufällig generierte ID die dann mit der org. URL in der Datenbank gespeichert wird.

ist doch gnz simple!

Mit MD5 werden die mir sicherheit nicht handtieren!
Mit Zitat antworten
  #8 (permalink)  
Alt 21-06-2007, 12:16
ArSeN
 Registrierter Benutzer
Links : Onlinestatus : ArSeN ist offline
Registriert seit: Feb 2006
Ort: Berlin
Beiträge: 1.052
ArSeN ist zur Zeit noch ein unbeschriebenes Blatt
ArSeN eine Nachricht über ICQ schicken ArSeN eine Nachricht über AIM schicken ArSeN eine Nachricht über Yahoo! schicken
Standard

Hm... Ich hab neulich ein Gutschein-Generierungs-System geschrieben, dafür sollten die Codes natürlich auch nicht 32 Zeichen lang sein, MD5 war also außer Frage.

Irgendwann kam ich dann aber darauf, das Attribut in der Datenbank, in der der Schlüssel gespeichert wird einfach Unique zu halten, und eine Schleife zu bauen, die falls die Einfügung einer neuen ID nicht gemeistert werden konnt (weil sie nämlich schon existiert) einfach ein weiteres Mal durchlaufen wird. So hab ich mit Sicherheit immer die Anzahl an Gutscheinen die ich haben will, und sie sind garantiert einzigartik. Mit 15 Stellen gibt es glücklicherweise immernoch 1.152.921.504.606.846.976 mögliche Kombinationen, ich weiß nichmal wie die Zahl heißt

äh.. PS: Ich hab die ersten 15 Zeichen von nem zufallsgenerierten MD5 genommen.
__________________
Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.
Mit Zitat antworten
  #9 (permalink)  
Alt 21-06-2007, 12:21
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

TinyURL verwendet wohl [a-z0-9] zur Generierung der Codes, das leistet weder md5 noch sha1 noch uniquid, das wird ein eigener Algorithmus sein.

Alle anderen vorgeschlagene Varianten sind hier mehr oder minder gleichwertig. Die Datenbank freut sich natürlich eher über integer-Werte~
Mit Zitat antworten
  #10 (permalink)  
Alt 21-06-2007, 12:33
frankburian
 Guest
frankburian
Beiträge: n/a
Standard

genau!

die werden einfach mit z.B. so einer simplen Funktion

PHP-Code:
        function getrandvalue($length)
        {
            
$result '';
            
srand((double)microtime()*1000000);
            for (
$i=0$i<$length$i++)
            {
                
$range rand(48,120);
                while ((
$range >= 58 && $range <= 64) || ($range >= 91 && $range <= 96)) $range rand(48,120);
                
$result.= chr($range);
            }
            return 
$result;
        } 
erstellen und dann in der db auf vorhandenheit prüfen, und ggf. mit der URL reinschreiben!
Mit Zitat antworten
  #11 (permalink)  
Alt 21-06-2007, 12:45
prego
 PHP Senior
Links : Onlinestatus : prego ist offline
Registriert seit: May 2005
Ort: Herborn
Beiträge: 1.609
prego ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich würde es versuchen so zu bauen, das du die DB vorhandenheit nicht mehr prüfen musst. Sprich, einen Wert erstellen der auf jeden Fall eindeutig ist...

Queries sparen

Weil, wenn du einen Wert generierst, danach in der DB fragst ob der schon vorhanden ist. Was machst du dann? Erneut DB-Fragen? Und was wenn der auch vorhanden ist?

Deswegen: Von Anfang an einen Wert definieren der nicht doppelt sein kann.

//edit:
Folgende Idee: dechex(rand() + microtime());

lol - da kommt ja fast wieder auf uniqid() raus
"Hierdurch wird eine 32-Zeichen-ID (128 Bit-Hex-Wert) erzeugt, die nur sehr schwer vorhersehbar ist."

Geändert von prego (21-06-2007 um 12:47 Uhr)
Mit Zitat antworten
  #12 (permalink)  
Alt 21-06-2007, 12:49
Truncate
 Registrierter Benutzer
Links : Onlinestatus : Truncate ist offline
Registriert seit: Nov 2005
Beiträge: 419
Truncate kann nur auf Besserung hoffen
Standard

Zitat:
Original geschrieben von prego
[B]Ich würde es versuchen so zu bauen, das du die DB vorhandenheit nicht mehr prüfen musst. Sprich, einen Wert erstellen der auf jeden Fall eindeutig ist...

Queries sparen
TinyURL prüft aber auch erst immer in der DB ob eine URL schon vorhanden ist - wie sonst würden dann bei einer URL immer der gleiche Hash rauskommen?
Mit Zitat antworten
  #13 (permalink)  
Alt 21-06-2007, 12:50
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Man kann auch einfach eine bigint-Spalte in mysql erstellen und da dann das Ergebnis eines microtime(true)-Aufrufes rein schreiben.
Da gehen einem die Möglichkeiten auch nicht sonderlich schnell aus. Ist natürlich mehr Platzverbrauch (bigint ist größer, demnach langsamer, als int)~
Mit Zitat antworten
  #14 (permalink)  
Alt 21-06-2007, 13:15
frankburian
 Guest
frankburian
Beiträge: n/a
Standard

naja, aber mal ehrlich gesagt, querys sparen muss man bei so einem projekt nicht! Sei denn der Webserver ist ein 386er
Mit Zitat antworten
  #15 (permalink)  
Alt 21-06-2007, 13:17
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von frankburian
naja, aber mal ehrlich gesagt, querys sparen muss man bei so einem projekt nicht! Sei denn der Webserver ist ein 386er
Naja, aber mal ehrlich, ein fullscan auf eine Tabelle bei jedem Seitenaufruf zwingt auch einen Intel Xeon irgendwann in die Knie.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:12 Uhr.