Lieber Kurosan,
T-Rex hat Dir ja schon einen wertvollen Linktipp gegeben. Lass mich noch auf ein Paar Dinge hinweisen, die Dir das Schreiben von PHP-Scripts etwas vereinfachen/verbessern könnten.
| echo '<form method=get action="'.SCRIPT_URI.'">'."\n";
> echo '<input type="hidden" name="func" value="newfile">'."\n";
> echo '<input type="hidden" name="dir" value="'.$dir.'">'."\n";
> echo '<img src="../../pic/clearpixel_1x1.gif" alt="" width="45" height="1" />'."\n";
Du schreibst jede Menge HTML-Code in Dein PHP-Script. Im Moment mag das noch eine sinnvolle Vorgehensweise für Dich sein, insbesondere, wenn Du alles schön "griffig" in einer einzigen PHP-Datei haben willst. Später wirst Du allerdings bei größeren Projekten schnell merken, dass Dir eine strengere Trennung von Programm-Logik (PHP) und Ausgabeformat (HTML) wesentlich mehr Übersichtlichkeit in Dein Projekt bringen kann. Daher halte ich es für besser, HTML-Dateien anzulegen, in denen der notwendige HTML-Code mit Platzhaltern steht, die Du dann in eine Variable einlesen und "befüllen" kannst. Beispiel:
<form method="get" action="{script-uri}">
<p>
<input type="hidden" name="func" value="newfile">
<input type="hidden" name="dir" value="{dir}">
<img src="../../pic/clearpixel_1x1.gif" alt="" width="45" height="1" />
<input style="width:200px;" name="src" type="text" size="50" value="NeueDatei.htm">
<input type="hidden" name="s_id" value="{s-id}">
<img src="../../pic/clearpixel_1x1.gif" alt="" width="25" height="1" />
<input type="submit" value="Datei erstellen" class="form">Datei erstellen</input>
</p>
</form>
Angenommen Du benutzt für Deine Platzhalter keine einzelnen Variablen, sondern ein Array, dessen Schlüssel Deinen Platzhalter-Variablen entsprechen:
$fill_values = array (
'script-uri' => SCRIPT_URI,
'dir' => $dir,
's-id' => (isset($_GET['s_id']) ? $_GET['s_id'] : '')
);
Nun kannst Du mit einer Schleife den eingelesenen HTML-Code befüllen:
$html_form = file_get_contents('./templates/uploader-form.html');
foreach ($fill_values as $key => $value) {
$search = sprintf('{%s}', $key);
$html_form = str_replace(
$search,
htmlspecialchars($value),
$html_form
);
}
echo $html_form;
Eine wasserdichte Fehlerprüfung solltest Du unbedingt auch implementieren. In meinem Code-Beispiel wird nicht sichergestellt, dass $_GET['s_id']
zwingend vorhanden sein muss, es wird im Fehlerfalle mit einem Leerstring weitergearbeitet. Ob das in Deinem Projekt sinnvoll ist, musst Du wissen.
copy(“$tempname”, “$name”);
Was ist hier der Unterschied zu copy($tempname, $name)
? Lass die Anführungszeichen weg, sie machen nichts besser, sondern verschleiern im besten Falle nur unnötig! Noch besser wäre natürlich, wenn Du Variablen garnicht erst umkopierst, sondern gleich die Originalvariablen nämest:
copy($_FILES['datei']['tmp_name'], $_FILES['datei']['name']);
Was Du hier aber eigentlich tust, ist nichts anderes, als die hochgeladene Datei in Deinen Bereich zu "verschieben". Dafür hat PHP eingens eine Funktion entwickelt: move_uploaded_file(). Daher ergibt sich folgender Einzeiler für Deinen originalen Vierzeiler:
move_uploaded_file($_FILES['datei']['tmp_name'], $_FILES['datei']['name']);
Liebe Grüße,
Felix Riesterer.
ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)