|
You last visited: Today at 02:38
Advertisement
Nach Upload neue HTML Seite und zufälliger Name.
Discussion on Nach Upload neue HTML Seite und zufälliger Name. within the Web Development forum part of the Coders Den category.
05/12/2013, 14:22
|
#1
|
elite*gold: 15
Join Date: May 2013
Posts: 1,718
Received Thanks: 245
|
Nach Upload neue HTML Seite und zufälliger Name.
Hallo Zusammen,
ich habe mir einen Upload Script besorgt aus dem Internet. Alles funktioniert einwandfrei. Wenn ich aber meine Dateien uploade kommen Sie 1 zu 1 in mein Server an. Also der Name bleibt gleich. Wie kann ich es so machen das der Datei Name sich automatisch zufällig ändert.
2. Frage: Wie kann ich es so machen das jedes mal nach dem Upload eine neue HTML Seite entsteht und dort die geuploaded Datei automatisch eingefügt ist?
Der Upload Script arbeitet ohne Datenbank.
LG Skyui
|
|
|
05/12/2013, 15:05
|
#2
|
elite*gold: 0
Join Date: Apr 2010
Posts: 1,674
Received Thanks: 229
|
Du gibts einfach einen zufälligen namen entweder mit der PHP random Funktion oder mit timestamp.
|
|
|
05/12/2013, 15:08
|
#3
|
elite*gold: 25
Join Date: Apr 2010
Posts: 1,019
Received Thanks: 331
|
Dafür gibts den Befehl uniqid() der dir anhand des Mikrosekundenbereichs einen Hash ermittelt der dementsprechend im Normalfall nur einmal vorkommt.
|
|
|
05/12/2013, 18:12
|
#4
|
elite*gold: 0
Join Date: Apr 2013
Posts: 45
Received Thanks: 12
|
Hey,
ich empfehle: Zahl 1-10.000 "-" DD-MM-YYY "-" HH:mm:ss
Könnte so aussehen
Code:
//assuming $fileExtension = the file's respective extension, without the dot
$newFileName = rand(1,10000)." - ".date(d.m.Y)." - ".date(H:i:s).'.'.$fileExtension;
Und zu dem HTML Seite erstellen (Achtung, Schwachsinn..aber egal.)
Man erstelle eine template.php die so aussieht:
PHP Code:
<!DOCTYPE HTML>
<HTML>
<HEAD>
<title> Upload <!filename!></title>
</HEAD>
<BODY>
<img src="<!filename!>" alt="Bild-Upload <!filename!>">
</BODY>
</HTML>
Das gibt das Template, alles was sonst noch Design etc. technisch dabei sein muss einfach anpassen.
<!filename!> ist hierbei der Dateihalter Platzname
Dann noch folgenden Code in deine Upload Datei:
PHP Code:
<?php
//assuming $fileExtension = the file's respective extension, without the dot
//further assuming $newFileName is set.
$template = file_get_contents('template.php');
$template = str_replace('<!filename!>', $newFileName, $template);
$htmlFileName = rand(1,10000).str_shuffle('oaisndoi')'.html'
file_put_contents($htmlFileName, $template);
echo "Cool beans, file ".$htmlFileName." created! :3";
?>
Der HTML Dateiname wird wie du siehst ganz einfach generiert aus 1-10.000 und ner zufälligen Anordnung der Buchstaben oaisndoi - nicht empfehlenswert, aber das kannste ja noch ändern.
|
|
|
05/12/2013, 18:15
|
#5
|
elite*gold: 0
Join Date: Feb 2010
Posts: 7,220
Received Thanks: 6,758
|
Quote:
Originally Posted by Cooltek
Hey,
ich empfehle: Zahl 1-10.000 "-" DD-MM-YYY "-" HH:mm:ss
Könnte so aussehen
Code:
//assuming $fileExtension = the file's respective extension, without the dot
$newFileName = rand(1,10000)." - ".date(d.m.Y)." - ".date(H:i:s).'.'.$fileExtension;
|
Was spricht dabei gegen eine UniqueID? Warum gerade Datum und Uhrzeit im Dateinamen? Soll keinerlei Angriff sein, würde mich nur gerne interessieren was deiner Meinung nach gegen eine UniqueID spricht.
|
|
|
05/12/2013, 18:23
|
#6
|
elite*gold: 0
Join Date: Apr 2013
Posts: 45
Received Thanks: 12
|
Quote:
Originally Posted by SoNiice
Was spricht dabei gegen eine UniqueID? Warum gerade Datum und Uhrzeit im Dateinamen? Soll keinerlei Angriff sein, würde mich nur gerne interessieren was deiner Meinung nach gegen eine UniqueID spricht.
|
Hey,
Selbstverständlich spricht nichts gegen eine Unique-ID, aber eine strukturierte Benennung macht meiner Meinung nach mehr Sinn. Durch die Benennung der Unique ID entsteht kein Nachteil, aber ebensowenig ein Vorteil. Benennung nach Name ist hilfreich wenn man z.B.: alle Dateien aus Zeitraum X bis Zeitraum Y entfernen möchte, aber Dateisysteminformationen (last-modified) nicht ergiebig sein sollten. Wenn es nur darum geht, Duplikate im Dateinamen auszuschliessen finde ich oben genannte Lösung besser.
Und keine Angst, als Angriff fasse ich Kritik schon nicht auf
|
|
|
05/12/2013, 18:27
|
#7
|
elite*gold: 0
Join Date: Feb 2010
Posts: 7,220
Received Thanks: 6,758
|
Aber gerade mit deiner Lösung ist die Chance auf eine Doppelbenennung doch höher oder irre ich mich? Selbst wenn am Anfang eine Zufallszahl eingefügt wird, besteht die Chance, dass diese doppelt vergeben wird - Natürlich müssten nun 2 Dateien in der selben Sekunde hochgeladen werden - Aber es wäre theoretisch möglich, was bei einer UniqueID unmöglich wäre :-)
|
|
|
05/12/2013, 18:31
|
#8
|
elite*gold: 0
Join Date: Apr 2013
Posts: 45
Received Thanks: 12
|
Hey SoNiice,
stimmt schon. Ich ging einfach mal nicht davon aus, dass ein Projekt, welches nicht einmal eine Datenbank nutzt, genug Nutzer hat, um in einer Sekunde 2 Bilduploads zu verursachen, die beide eine gleiche Zahl aus 10.000 ziehen (gigantische Warscheinlichkeit eigentlich).
Quote:
Originally Posted by SoNiice
Aber gerade mit deiner Lösung ist die Chance auf eine Doppelbenennung doch höher oder irre ich mich? Selbst wenn am Anfang eine Zufallszahl eingefügt wird, besteht die Chance, dass diese doppelt vergeben wird - Natürlich müssten nun 2 Dateien in der selben Sekunde hochgeladen werden - Aber es wäre theoretisch möglich, was bei einer UniqueID unmöglich wäre :-)
|
|
|
|
05/13/2013, 07:51
|
#9
|
elite*gold: 25
Join Date: Apr 2010
Posts: 1,019
Received Thanks: 331
|
Quote:
|
aber ebensowenig ein Vorteil. Benennung nach Name ist hilfreich wenn man z.B.: alle Dateien aus Zeitraum X bis Zeitraum Y entfernen möchte
|
Die Unique ID basiert auf den Mikrosekunden des Timestamps... Damit kann man sogar noch genauer in Zeitraum X suchen ohne sich Parser bauen zu müssen
|
|
|
05/14/2013, 19:04
|
#10
|
elite*gold: 0
Join Date: Apr 2013
Posts: 45
Received Thanks: 12
|
Quote:
Originally Posted by Synatex
Die Unique ID basiert auf den Mikrosekunden des Timestamps... Damit kann man sogar noch genauer in Zeitraum X suchen ohne sich Parser bauen zu müssen 
|
Hallo,
Standardmäßig zumindest nicht.
Folgendes Script:
PHP Code:
<?php echo uniqid(); ?>
generiert bei mir (PHP 5.4.7) Outputs wie diese hier:
Quote:
51926de2d2236
51926df266599
51926df5df833
51926df88d815
|
Das Präfix variiert also nach "51926d" woraufhin auch noch Buchstabe (1x e, 1x f), eine variable Menge Zahlen (mal 88, mal nur 5), dann wieder Buchstaben und letztlich nur Zahlen folgen.
1) will ich sehen wie du daraus einen Zeitraum abliest, ohne Parser o.Ä.
2) sehe ich keinen Vorteil in Uniqid gegenüber ausreichend zufälliger Zahlen in Verbindung mit dem Datum, abgesehen von Race Conditions die bei einem solchen Projekt eindeutig vernachlässigbar sind.
lg
P.S.: Bezweifle ausserdem, das man dort auch mit Parsern oder Ähnlichem die Zeit rausholen kann: wo sind die ganzen Daten gespeichert? Wenn man für eine Komplette Zeitangabe schon 10 Zeichen braucht, wie zum Beispiel:
1368551158 (Unix Timestamp)
und dort noch keine Milisekundenangabe dabei hat. Aber was das an geht, lass ich mich gerne eines Besseren belehren
|
|
|
05/14/2013, 19:16
|
#11
|
elite*gold: 0
Join Date: Feb 2010
Posts: 7,220
Received Thanks: 6,758
|
Hi Cooltek,
ich habe mir gerade die genaue Definition der UniqueID nochmals angeschaut, Synatex hat da soweit erstmal recht. Die UniqueID gibt eine eindeutige ID mit Präfix zurück, die auf der aktuellen Zeit in Mikrosekunden basiert.
|
|
|
05/14/2013, 19:53
|
#12
|
elite*gold: 0
Join Date: Apr 2013
Posts: 45
Received Thanks: 12
|
Quote:
Originally Posted by SoNiice
Hi Cooltek,
ich habe mir gerade die genaue Definition der UniqueID nochmals angeschaut, Synatex hat da soweit erstmal recht. Die UniqueID gibt eine eindeutige ID mit Präfix zurück, die auf der aktuellen Zeit in Mikrosekunden basiert.
|
Hey,
auch ich hab die Docs bemüht, allerdings soweit auch nichts zur wirklichen "Rückwandlung" von einer Unique-ID in Zeit (die man, wenn man zB Bilder aus Zeitraum X bis Y löschen möchte benötigt ) gefunden
Deswegen würd' ich die Aussage
Quote:
|
Damit kann man sogar noch genauer in Zeitraum X suchen ohne sich Parser bauen zu müssen
|
nicht so stehen lassen. Lasse mich aber gerne eines Besseren belehren.
lg
|
|
|
05/14/2013, 20:49
|
#13
|
elite*gold: 0
Join Date: Feb 2010
Posts: 7,220
Received Thanks: 6,758
|
Über eine "Rückwandlung" beziehungsweise eine Möglichkeit die Zeit wieder auszulesen konnte ich soweit auch erstmal nichts finden, schade eigentlich - Wäre interessant gewesen.
|
|
|
05/14/2013, 21:32
|
#14
|
elite*gold: 25
Join Date: Apr 2010
Posts: 1,019
Received Thanks: 331
|
Nur weil es Buchstaben enthält, heißt es noch lange nicht, dass es kein Timestamp ist
In dem Fall von uniqid() enthalten die ersten 8 Zeichen (HEX) den UNIX Timestamp und die letzten 5 Zeichen die Mikrosekunden um genau zu sein. Somit musst du nur die ersten 8 Zeichen auslesen und wieder in eine Dezimalzahl umwandeln und du hast deinen Timestamp:
PHP Code:
<?php
$uid = uniqid();
// Timestamp $uid = substr($uid,0,8);
// Ausgabe echo date('d-m-Y H:i:s',hexdec($uid));
?>
Keine Parser, keine extra Funktionen um Dateien zu benennen und exakte Werte durch PHP mitgelieferte Funktionen die dementsprechend um einiges schneller sind (klar, für kleine Projekte nicht unbedingt benötigt, aber immer noch gut zu wissen).
Wenn man weitere Daten haben will sollte man sich überlegen ob eine Datenbank nicht doch das richtige wäre.
Quote:
|
eindeutige ID mit Präfix zurück
|
Nur, wenn man das Präfix angibt.
|
|
|
05/15/2013, 14:26
|
#15
|
elite*gold: 0
Join Date: Apr 2013
Posts: 45
Received Thanks: 12
|
Hey Synatex,
auf jeden Fall interessante Funktion, danke dir auch für die Erklärung.
Ist dann denke ich je nach Anwendung aber auch wichtig, zu entscheiden was wichtiger ist:
Entweder Dateinamen die ohne Weiteres archiviert / weitergegeben / anderweitig genutzt werden können (will sagen: man erkennt sie mit bloßem Auge) oder die Vermeidung des Falles "2x die Gleiche Zahl aus 10.000 innerhalb einer Sekunde" - je nach Projekt ist sicher beides Möglich.
Danke für die Erklärung nochmal,
Cooltek
|
|
|
 |
|
Similar Threads
|
[S] HTML/JavaScirpt PoPup Ohne Anfrage (Neue Seite) [B] e*g
04/29/2013 - elite*gold Trading - 0 Replies
Hallo,
Ich suche nach einen JavaScript Code in HTML dafür das sich ein Popup Öffnet was nicht im Taskmanager steht und das eine Neue Seite zeigt, die es eben Aufruft. Wenn es Funktioniert zahle ich mit e*g :D Kontakt bitte Per PN
|
Upload Seite gesucht
01/25/2013 - Off Topic - 19 Replies
Ich suche eine Upload Seite auf der ich kostenlos bis zu 2gb hochladen kann.
|
V15 Sedrikas Files Worldserver stürzt nach zufälliger Zeit ab
08/10/2011 - Flyff Private Server - 3 Replies
EDIT:
interessiert ja eh keinen - close!
|
[HTML]Bilder Upload
01/20/2011 - Flyff Private Server - 10 Replies
Hayy,
ich habe mal eine frage an euch HTML'er.
Ich versuche mich grade so ein bisschen an HTML und möchte gern ne ScreenShot Seite machen, wo user ihre ingame bilder hochladen können.
nur weis ich leider nicht wie oder wo ich diese Upload funktion her bekomme.
Nun kommst du :
|
Need upload Seite
11/11/2010 - Metin2 Private Server - 1 Replies
Hi leuts
ich habe ein p-server gemacht aber ich suche eine seite
wo ich mein client reintuen kann ca 1,3gb pls help
|
All times are GMT +1. The time now is 02:39.
|
|