![]() |
Re: [PHP] PHP Funktion aus Formular aufrufen
Hallo. :hi: Ich habe es doch geschafft. ;)
Ich muss es nur irgendwie schaffen, dass dieser Post-Flag zurückgesetzt wird, sonst will er die letzte Aktion bei jedem F5 ausführen und das kann ich nicht brauchen. |
Re: [PHP] PHP Funktion aus Formular aufrufen
Du setzt sie doch selbst in das Formular rein
Code:
<input type="hidden" name="sent" value="1">
|
Re: [PHP] PHP Funktion aus Formular aufrufen
Ich weiß, aber wenn ich F5 drücke will er noch mal eine Datei hochladen, weil if ($_POST['sent'] == '1') das zutrifft. Ich dachte, ich könnte nach dem Hochladen das machen:
Code:
damit er, wenn man F5 drückt eben nichts macht. Aber so geht es leider nicht.
$_POST['sent'] = '0';
|
Re: [PHP] PHP Funktion aus Formular aufrufen
Zwischen dir und dem PHP-Skript gibt es keinen Dialog!
1. Du stellst eine Anfrage (z.B. ich möchte die Datei soundso hochladen) 2. Der Server empfängt die Anfrage und führt das PHP-Skript aus. 3. Du erhälst das Ergebnis von (2) Ganz wichtig: Nach (2) ist das PHP-Skript beendet! Alle zugewiesenen Variablen sind weg (ok, du könntest Sessions nehmen)! Wenn du die Seite noch einmal anforderst, dann wird wieder das komplette Skript ausgeführt. Deine Zuweisung an $_POST['sent'] kommt nirgendwo an. ... und jetzt in die Delphi-Welt gezogen: Denke dir eine Delphi-Konsolen-Anwendung, die dasselbe macht wie dein PHP-Skript. Diese Anwendung wird jedesmal beendet, nachdem sie eine Anfrage behandelt hat. Für die nächste (F5, Link anklicken) wird das Programm wieder komplett neu gestartet und weiß nichts vom letzten Durchlauf. |
Re: [PHP] PHP Funktion aus Formular aufrufen
Hm. OK. Wenn ich die Seite lade, ohne eine Datei hochzuladen, dann kann ich so oft aktualisieren, wie ich will und es passiert nichts. So bald ich aber einmal eine Datei hochgeladen habe und dann aktualisiere, dann kommt erst der Dialog vom IE, dass die Daten noch mal gesendet werden müssten, dann läd er natürlich noch mal was hoch und zeigt dann die Seite an. Und genau DAS will ich nicht haben. Deswegen bin ich davon ausgegangen, dass er sich das noch irgendwo gemerkt hätten. Aber es scheint wohl noch im Cache vom Browser zu sein. Gibt es einen PHP Befehl, um das Cachen abzuschalten, damit genau das nicht passiert?
|
Re: [PHP] PHP Funktion aus Formular aufrufen
Ist eigentlich der falsche Weg - wie wäre es, wenn du nach dem erfolgreichen Hochladen einfach auf eine andere Seite weiterleitest? Z.B. die Übersicht über die hochgeladenen Dateien.
// Nachtrag: oder auf die Seite selbst? Dann hast du einen Puffer dazwischen und F5 richtet keinen Schaden mehr an (nur noch der Zurück-Button). Also nach erfolgreichem Hochladen setzt du einfach
Code:
rein.
header('Location: ' . $_SERVER['REQUEST_URI']);
|
Re: [PHP] PHP Funktion aus Formular aufrufen
Liste der Anhänge anzeigen (Anzahl: 1)
Die ist ja auch auf der Seite, siehe Anhang. Deswegen will ich ja dahin zurück. ;)
|
Re: [PHP] PHP Funktion aus Formular aufrufen
Zitat:
Code:
Führt zu der folgenden Fehlermeldung:
<?php
echo ' '; if ($_POST['sent'] == '1') { upload_file('/'.$newpath.'/'.$_FILES['uploadfile']['name'], $uploadfile, FTP_BINARY); echo $_FILES['userfile']['error']; } else if ($_POST['sent'] == '2') { echo 'Delete: '.$deletefile; } header('Location: ' . $_SERVER['REQUEST_URI']); echo '</p>'; ?> Zitat:
|
Re: [PHP] PHP Funktion aus Formular aufrufen
Ok, dann mache
Code:
nach dem erfolgreichen Hochladen.
{
header('Location: ' . $_SERVER['REQUEST_URI']); exit; } Dann musst du natürlich *VOR* allem anderen Code auf einen Upload prüfen und diesen durchführen. Oder ganz am Anfang deines Skripts
Code:
benutzen.
ob_start(...);
|
Re: [PHP] PHP Funktion aus Formular aufrufen
Auch das Exit bringt nichts. Der Code ist jetzt ganz am Ende der Datei:
Code:
Aber da ist es ja schon zu spät, weil der Header schon gesendet wurde. Und wenn ich das ganz am Anfang der Seite stelle, dann habe ich ja dann eine leere Seite im Browser wegen dem Exit oder nicht?
<?php
echo ' '; if ($_POST['sent'] == '1') { upload_file('/'.$newpath.'/'.$_FILES['uploadfile']['name'], $uploadfile, FTP_BINARY); echo $_FILES['userfile']['error']; echo '</p>'; header('Location: ' . $_SERVER['REQUEST_URI']); echo '[img]line.png[/img]'; echo '<table class="copy">'; echo '<tr><td class="ver">LittleWebFTP Ver.: 1.0</td><td class="copy">Copyright © 2005 Michael Puff Homepage: [url="http://www.luckie-online.de"]http://www.luckie-online.de[/url]</td></tr>'; echo '</table>'; echo '</body>'; echo '</html>'; exit; } else if ($_POST['sent'] == '2') { echo 'Delete: '.$deletefile; echo '</p>'; header('Location: ' . $_SERVER['REQUEST_URI']); echo '[img]line.png[/img]'; echo '<table class="copy">'; echo '<tr><td class="ver">LittleWebFTP Ver.: 1.0</td><td class="copy">Copyright © 2005 Michael Puff Homepage: [url="http://www.luckie-online.de"]http://www.luckie-online.de[/url]</td></tr>'; echo '</table>'; echo '</body>'; echo '</html>'; exit; } ?> [img]line.png[/img] <table class="copy"> <tr><td class="ver">LittleWebFTP Ver.: 1.0</td><td class="copy">Copyright © 2005 Michael Puff Homepage: [url="http://www.luckie-online.de"]http://www.luckie-online.de[/url]</td></tr> </table> </body> </html> Dein zweiter Vorschlag mit ob_start(...); hat auch nicht geholfen:
Code:
<?php
echo ' '; if ($_POST['sent'] == '1') { upload_file('/'.$newpath.'/'.$_FILES['uploadfile']['name'], $uploadfile, FTP_BINARY); echo $_FILES['userfile']['error']; echo '</p>'; ob_start(); } |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz