var_dump($res);
wenn du keine ressource id bekommst, hast was falsch gemacht.
Keine Ahnung aber überall rumfummeln.Das wird teuer ?
Hast du etwas neues eingebaut und das Netzteil ist jetzt zu schwach für alles zusammen?
Mess das NT mit einem Multimeter durch und schau wie die Voltcores liegen (5.0V an den LW-Steckern)
wenn es Dir wirklich nur darum geht, das keine Datei überschrieben wird, warum hängst Du dann nicht einfach eine Zahl an die Datei an. z.B. wenn es bild.gif schon gibt, heißt die neue Datei bild1.gif und wenn es die schon gibt bild2.gif usw. Hier mal ein Codeschnippsel der das leistet:
$uploaddir='/httproot/upload/'; //Verzeichnis für Upload
$filename=$_FILES['userfile']['name']; //Name der Datei, wie sie hochgeladen wurde
$ftype=strrchr($file,'.'); //Dateiende wie z.B. .gif, .jpg usw.
$fname=substr($file,0,strlen($file)-strlen($ftype)); //der Name der Datei ohne Endung
//solange die Datei existiert wird ein Counter hochgezählt und an den Dateinamen angehangen.
$a=0;
while(fileexists($uploaddir.$filename)){
$a++;
$filename=$fname.''.$a.$ftype;
}
//hier hast Du den Namen unter dem Du die Datei speichern kannst
echo $filename;
Lioxen am 29. Oktober 2009 16:35 ups der hat sämtliche Unterstriche gelöscht, sollte eigentlich heissen:
$filename=$fname.'unterstrich'.$a.$ftype;
aber Du kannst es auch weglassen, dann hängt er nur die Zahl an:
$filename=$fname.$a.$ftype;
moppelito am 29. Oktober 2009 17:00 Problem: wenn ich nach einer gweissen daei suche komme durcheinander mit ordnern wäre das einfacher, kann ich: $a++ $new_path = mkdir ( $a, 0700 );
????
Lioxen am 29. Oktober 2009 18:20 Da musst Du erst mal rausfinden, welche Zahl das letzte erstellte Verzeichnis überhaupt hat. Das könnte man auch in einer while Schleife abfragen. z.B.
$a=1;
while(file_exists($uploaddir.$a)){
$a++;
}
if(mkdir($uploaddir.$a)){
//weiter im Code
}
else{
echo 'Fehler beim Anlegen des Verzeichnisses';
}
das hat aber den Nachteil, dass je mehr Verzeichnisse schon angelegt sind um so länger braucht die Schleife. Außerdem wird das Probleme machen, wenn zufälligerweise mehrere Personen eine Datei hochladen wollen.
Genauso könnte man mit readdir das upload Verzeichnis auslesen. Da man da aber auch Dateien zurückbekommt und das Ergebnis nicht geordnet bekommt, muss man das im Nachhinein tun. Auch hier sehe ich aber ein Problem, wenn mehrere User zur gleichen Zeit eine Datei hochladen wollen.
Bleibt eigentlich nur, die Zahl in einer Datei zu speichern und beim lesen ein exclusive Lock zu legen. D.h. es kann nur eine Instanz auf die Datei zu einer bestimmten Zeit zugreifen. Alle anderen müssen warten.
z.B. so
$fp = fopen("./ordnerzahl.txt", "r+");
if (flock($fp, LOCKEX)) { // ein exclusive lock
while (!feof($fp)) {
$line=trim(fgets($fp, 1024));
}
ftruncate($fp, 0); // kürzt die Datei auf 0
rewind($fp); //Dateizeiger auf den Anfang
$newid=(int)$line+1;
fputs($fp,$newid); //schreibt die neue Zahl in die Datei
mkdir($upload.$line);
//hier der ganze kram um die Datei zu verschieben also
moveuploadedfile(...);
flock($fp, LOCKUN); // entfernt den Lock
}
else {
echo "Konnte kein Lock erhalten!";
}
Dann musst Du noch eine Datei ordnerzahl.txt in dem Ordner anlegen wo das Script liegt und dort eine 1 reinschreiben. Hinweis: die löschen immer die Unterstriche hier: das heißt LOCKunterstrichEX und LOCKunterstrichUN
moppelito am 30. Oktober 2009 18:30 was ist beid dir der uploaddir<??? ordner odeer hochgeladene datei^^
Lioxen am 2. November 2009 09:39 das ist eine Variable, die ich am Anfangs selbst vergeben habe(siehe ganz oben), da ich Deine Verzeichnisstruktur nicht kenne. Diese speichert den Pfad zu dem Verzeichnis in der alle hochgeladenen Dateien oder auch Ordner angelegt werden sollen.
mkdir( $a, 0700) wenn dann, denn entweder variable oder anführungszeichen.
da du nicht weisst was der letzte Ordner für eine Zahl hatte, musst du das verzeichnis sortiert durchsuchen (loop über read_dir) und am ende hat er ja das verzeichnis mit der höchsten Zahl. diese dann plus eins..
moppelito am 29. Oktober 2009 14:41 kannsnt du mir das genauer beschreiben? bin grad am anfang von php^^ wie setzte ich dieses read_dir nach dem verzwichnis mit der höchsten zahl?
Prozesse kann man mit PHP starten, allerdings nur auf dem Server. Auf Clientseite könnte das u.U. Java oder ein ActiveX-Steuerelement, bin mir aber nicht sicher, ob die soviel Zugriff aufs System haben.
Für "die Seite die jmd. zuletzt besucht hat" siehe Antwort von rafi123
... und IP herausbekommen bringt auch nichts, weil die nämlich bei 90 % der I-Net-User eine dynamische ist - d. h. Du kommst nicht weiter als bis zum letzten Knotenpunkt des Providers und das ist dann häufig noch ein 50-km-Radius ...
Danke, aber der fehler lag im: $sql = "SELECT * FROM file WHERE id = '". $_GET['id']."'";