Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP] PHP Funktion aus Formular aufrufen (https://www.delphipraxis.net/55720-%5Bphp%5D-php-funktion-aus-formular-aufrufen.html)

Luckie 26. Okt 2005 11:20

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.

Flocke 26. Okt 2005 11:30

Re: [PHP] PHP Funktion aus Formular aufrufen
 
Du setzt sie doch selbst in das Formular rein
Code:
<input type="hidden" name="sent" value="1">

Luckie 26. Okt 2005 11:40

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:
$_POST['sent'] = '0';
damit er, wenn man F5 drückt eben nichts macht. Aber so geht es leider nicht.

Flocke 26. Okt 2005 11:47

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.

Luckie 26. Okt 2005 11:53

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?

Flocke 26. Okt 2005 11:58

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:
header('Location: ' . $_SERVER['REQUEST_URI']);
rein.

Luckie 26. Okt 2005 12:01

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. ;)

Luckie 26. Okt 2005 12:04

Re: [PHP] PHP Funktion aus Formular aufrufen
 
Zitat:

Zitat von Flocke
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:
header('Location: ' . $_SERVER['REQUEST_URI']);
rein.

Code:
  <?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>';
  ?>
Führt zu der folgenden Fehlermeldung:
Zitat:

Warning: Cannot modify header information - headers already sent by (output started at /var/www/l3s11195/html/Ablage/Privat/testFTP.php:8) in /var/www/l3s11195/html/Ablage/Privat/testFTP.php on line 86

Flocke 26. Okt 2005 12:05

Re: [PHP] PHP Funktion aus Formular aufrufen
 
Ok, dann mache
Code:
{
  header('Location: ' . $_SERVER['REQUEST_URI']);
  exit;
}
nach dem erfolgreichen Hochladen.

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:
ob_start(...);
benutzen.

Luckie 26. Okt 2005 12:23

Re: [PHP] PHP Funktion aus Formular aufrufen
 
Auch das Exit bringt nichts. Der Code ist jetzt ganz am Ende der Datei:
Code:
    <?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 &copy; 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 &copy; 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 &copy; 2005 Michael Puff
Homepage: [url="http://www.luckie-online.de"]http://www.luckie-online.de[/url]</td></tr>
  </table>
</body>
</html>
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?

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.
Seite 3 von 4     123 4      

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