php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 29.10.2009, 14:33  
Erfahrener Benutzer
 
Benutzerbild von Ind3X
 
Registriert seit: 16.06.2008
Beiträge: 176
Ind3X befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Wie Script debuggen?

Hi Leute,

ich wende mich hier mit einem etwas seltsamen Problem an euch:
Eigentlich habe ich garkein Problem, das ist auch der Punkt ^^

Ich habe mir (aus Lust und Laune) ein PHP-Upload-Script gebastelt.
Nun habe ich da einen Part drin, der mir an die Datei eine Zufallszahl vornedran hängt,
um Duplikate zu vermeiden. Dies soll er noch einmal ausführen,
falls diese Datei (zufälligerweise) auch schon existiert.

Nun gibt es 2 Haken:

1. Wie teste ich ob er im unwahrscheinlichen Falle dass ein zufällig generierter Dateiname
schon vergeben ist auch tatsächlich einen neuen generiert?

2. Wie gehe ich am besten vor, wenn ich sicherstellen möchte, dass er mir,
in diesem Fall nicht noch einmal 5 Zahlen dran hängt, sondern stattdessen 5 neue?

Ich hoffe ihr habt da eine Idee, hier der Teil des Script, sollte alles wichtige sein,
wenn nicht sagts, dann stell ich den ganzen rein.

PHP-Code:
    $userfile ereg_replace(" ","_",$userfile);            //No Spaces
    
$userfile strtolower($userfile);                        //No Upper
    
    
function make_random_name($oldname){
        
$randomizer rand(0000099999);                        //5-digit-Random-Number
        
$file_name $randomizer."_".$oldname;                    //random add
    
return $file_name;
    }
    
//no duplicate Filenames!
    
while($check != 1){
    
$check 0;
    
$userfile make_random_name($userfile);
    if (!
file_exists($username)){
        
$check 1;
        }
    } 
mfg Ind3X

Geändert von Ind3X (29.10.2009 um 14:43 Uhr).
Ind3X ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 29.10.2009, 14:52  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Benutz doch einfach einen Randomwert und einen (Mikro?)Timestamp. Wenn das zu unübersichtlich wird, kannst Du auch einen Hash daraus generieren. Oder einen Hash aus Timestamp und Ursprungsname, das sollte auch reichen.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
Alt 29.10.2009, 15:06  
Erfahrener Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 1.169
PHP-Kenntnisse:
Fortgeschritten
xm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphäre
Standard

PHP-Code:
while($check != 1){
    
$check 0;
    
$rand rand(0000099999);
    if (!
file_exists($username.'_'.$rand)){
        
$check 1;
        
$filename $username.'_'.$rand;
        }
    } 

EDIT: Übrigens: rand(00000, 99999); entspricht rand(0, 99999);. Du meinst wahrscheinlich rand(10000, 99999);
xm22 ist offline  
Alt 29.10.2009, 15:42  
Erfahrener Benutzer
 
Benutzerbild von Ind3X
 
Registriert seit: 16.06.2008
Beiträge: 176
Ind3X befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von nikosch Beitrag anzeigen
Benutz doch einfach einen Randomwert und einen (Mikro?)Timestamp. Wenn das zu unübersichtlich wird, kannst Du auch einen Hash daraus generieren. Oder einen Hash aus Timestamp und Ursprungsname, das sollte auch reichen.
Ja, an die Möglichkeiten habe ich auch schon gedacht, aber auch dabei kann es (sehr selten, schon klar) vorkommen dass sich zufällig die selbe Kombination generiert. Und ich möchte auch keine ellenlange Kombination haben, 10 Stellen allerhöchstens.

Zitat:
Zitat von xm22 Beitrag anzeigen
PHP-Code:
while($check != 1){
    
$check 0;
    
$rand rand(0000099999);
    if (!
file_exists($username.'_'.$rand)){
        
$check 1;
        
$filename $username.'_'.$rand;
        }
    } 
EDIT: Übrigens: rand(00000, 99999); entspricht rand(0, 99999);. Du meinst wahrscheinlich rand(10000, 99999);
Danke dir,das löst die Sache natürlich sehr einfach! Und nee, die 00000 stimmt schon so, weiß auch nicht mehr wieso ich 5 Stück gemacht habe, aber mit 10000 würde ich mich ja unnötig einschränken. =)

Geändert von Ind3X (29.10.2009 um 15:47 Uhr).
Ind3X ist offline  
Alt 29.10.2009, 15:57  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
weiß auch nicht mehr wieso ich 5 Stück gemacht habe
Vermultlich, weil Du führende Nullen (einheitliche Längen) haben wolltest, was so aber nicht funktioniert.
Zitat:
Danke dir,das löst die Sache natürlich sehr einfach!
Eigentlich nicht. Im worst case läuft das Script ewig (bis zum Timeout). Wenn Du schon auf jede Eventualität bedacht bist..

Zitat:
Und ich möchte auch keine ellenlange Kombination haben, 10 Stellen allerhöchstens.
Du kannst auch nur nen Hash als Dateinamen benutzen. Ursprungsfilenamen trägst Du sinnvollerweise sowieso in eine Datenbank ein.

Zitat:
aber auch dabei kann es (sehr selten, schon klar) vorkommen dass sich zufällig die selbe Kombination generiert.
Du kannst auch md5_file / sha1_file benutzen.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
Alt 29.10.2009, 16:24  
Erfahrener Benutzer
 
Benutzerbild von Ind3X
 
Registriert seit: 16.06.2008
Beiträge: 176
Ind3X befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Im worst case läuft das Script ewig (bis zum Timeout).
Und wie sollte dieser worst case aussehen?

Ich danke euch für eure Vorschläge, ich werde die ersteinmal durcharbeiten, und denke sie werden mich ein gutes Stück weiter bringen.

Ich werde den Thread mal als erledigt markieren, ich denke mit euren Denkansätzen werde ich gut zurecht kommen, danke!

mfg Ind3X
Ind3X ist offline  
Alt 29.10.2009, 16:37  
Erfahrener Benutzer
 
Benutzerbild von Dark Guardian
 
Registriert seit: 10.10.2009
Beiträge: 2.637
PHP-Kenntnisse:
Fortgeschritten
Dark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekannt
Standard

Zitat:
Zitat von Ind3X Beitrag anzeigen
Und wie sollte dieser worst case aussehen?
Der worst-case wäre das rand() nur Dateinamen generiert die schon vorhanden sind und die while-Schleife niemakls endet -> script timeout.
Dark Guardian ist offline  
Alt 29.10.2009, 17:13  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Ganz genau. Und bei Allerwelts-Dateinamen (bild.jpg) ist das mit zunehmender Zeit immer weniger unwahrscheinlich.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Werte von einem Php Script in ein anderes Php Script üergeben WINFO2105 PHP Tipps 2009 5 15.07.2009 20:05
Scriptangebot 1 Klick Counter Hosting Script Charbel Scriptbörse 0 23.06.2009 07:43
Firefox startet Script bei Timeout wieder neu Wolla PHP Tipps 2009 2 18.05.2009 18:07
[Erledigt]Brauche Hilfe beim Script Debuggen fuckinghot19 PHP Tipps 2009 10 25.04.2009 23:21
phpBB Loginscript in eigenes Login Script einbinden 2wuck PHP Tipps 2007 4 19.12.2005 23:10
[Erledigt] php script und ixed PHP Tipps 2005-2 14 12.10.2005 13:34
[Erledigt] Verzögerung durch included Script? Umgehen? PHP Tipps 2005-2 4 10.07.2005 19:26
[Erledigt] Relay Script PHP-Fortgeschrittene 11 01.06.2005 16:02
[Erledigt] Hilfe bei Download Verwaltungs Script PHP Tipps 2005 8 04.05.2005 10:29
Fehler bei Script, welches Ordner erstellt PsychoEagle PHP Tipps 2005 3 23.04.2005 16:03
[Erledigt] python script mit php aufrufen... PHP-Fortgeschrittene 1 17.11.2004 17:11
PHP Script aus PHP aufrufen Stümper PHP Tipps 2004 5 26.09.2004 08:15
"das" Script oder "der" Script?? Simbo Off-Topic Diskussionen 31 16.09.2004 17:04
[Erledigt] Muss ein php script für unsere schule ändern Datenbanken 1 28.06.2004 14:33

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php script debuggen, debuggen von php-skripten, \script debuggen\, php script debugger

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:02 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum