Delphi-PRAXiS

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 25. Okt 2005 22:40


[PHP] PHP Funktion aus Formular aufrufen
 
Ich habe folgende Funktion in einer PHP Datei:
Code:
  function upload_file($source, $dest, $mode)
  {
    $conn = ftp_connect(SERVER);
    ftp_login($conn, USER, PW);
    $result = f_put($conn, $source, $dest, $mode);
    ftp_close($conn);
    return $result;
  }
und folgendes Formular:
Code:
  <form ENCTYPE="multipart/form-data" ACTION="???" METHOD=POST>
    <input NAME="uploadfile" SIZE=75 TYPE="file">
    <input TYPE="submit" VALUE="Send File">
  </form>
Wie kann ich jetzt die Funktion aus der Datei aufrufen, ihr die nötigen Parameter übergeben und da nach wieder die Seite mit dem Formular anzeigen?

DGL-luke 25. Okt 2005 22:47

Re: [PHP] PHP Funktion aus Formular aufrufen
 
du kannst dem apache doch nicht sagen, er soll bitte php sagen, es solle eine funktion aufrufen und gleichzeitig variablen zuweisen..... ;)

include die funktion in einer php-datei in der du sie mit den $_REQUEST-paramtern aufrufst, und schicke deine form da hin.

ripper8472 25. Okt 2005 22:50

Re: [PHP] PHP Funktion aus Formular aufrufen
 
http://www.php.net/features.file-upload

faux 25. Okt 2005 22:54

Re: [PHP] PHP Funktion aus Formular aufrufen
 
Meinst du in etwa so?

Code:
<?php
function upload_file($source, $dest, $mode)
  { 
    $conn = ftp_connect(SERVER);
    ftp_login($conn, USER, PW);
    $result = f_put($conn, $source, $dest, $mode);
    ftp_close($conn);
    return $result;
  }
if ($_POST['sent'] == '1') {
  upload_file(....);
}
?>
<form ENCTYPE="multipart/form-data" ACTION="<?=$_SERVER['PHP_SELF'] ?>" METHOD=POST>
  <input type="hidden" name="sent" value="1">
  <input NAME="uploadfile" SIZE=75 TYPE="file">
  <input TYPE="submit" VALUE="Send File">
</form>
Grüße
Faux

Luckie 25. Okt 2005 23:01

Re: [PHP] PHP Funktion aus Formular aufrufen
 
@faux: Ich denke schon. Die Upload-Funktion liegt jetzt aber bei dir in der gleichen Datei wie das Formular oder? Und wie kommt die Funktion an die Parameter ran?

@ripper8472: Das habe ich auch schon gefunden, bin nur nicht damit klar gekommen.

faux 25. Okt 2005 23:06

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

Zitat von Luckie
Die Upload-Funktion liegt jetzt aber bei dir in der gleichen Datei wie das Formular oder?

Ja, aber du kannst sie auch in eine Datei x.php geben und sie dann einfach per require('x.php'); einbinden.

Luckie 25. Okt 2005 23:10

Re: [PHP] PHP Funktion aus Formular aufrufen
 
Nun ja, die Funktion ist ja schon in einer Datei die per include eingebunden ist. Wie komme ich jetzt aber an die Werte aus dem Formular, damit ich sie der Funktion übergeben kann?

faux 25. Okt 2005 23:21

Re: [PHP] PHP Funktion aus Formular aufrufen
 
Es gibt eine Variable, die $_FILES heißt.

Anmerkung: Dieses Array wurde mit PHP 4.1.0 eingeführt. In älteren Versionen benutzen Sie das Array $HTTP_POST_FILES.

Da sind alle wichtigen Informationen über die übertragenen Dateien (in deinem Fall ist es nur eine) drinnen.
In deinem Fall:

Code:
$_FILES['uploadfile']['name'] //Name der Datei wie sie auf den System des Uploaders hieß
$_FILES['uploadfile']['size'] //Größe
$_FILES['uploadfile']['typ'] //Mime-Typ der Datei
$_FILES['uploadfile']['tmp_name'] //Name wie die upgeloadene Datei im Temp-Verzeichnis des Servers heißt
Du kannst jetzt zum Beispiel so aufrufen:

Code:
$file = fopen($_FILES['uploadfile']['tmp_name'], 'r');
upload_file($file, 'pfad/am/ftp/server', FTP_ASCII); //oder FTP_BINARY
Wobei ich glaube, dass in der Funktion ein Fehler ist.
Es müsste nicht $result = f_put($conn, $source, $dest, $mode); sondern $result = f_put($conn, $dest, $source, $mode); heißen.

Luckie 25. Okt 2005 23:26

Re: [PHP] PHP Funktion aus Formular aufrufen
 
Wie so Temp Verzeichnis? Und was spielt hier in dem Zusammenhang move_uploaded_file für eine Rolle?

faux 25. Okt 2005 23:30

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

Zitat von Luckie
Wie so Temp Verzeichnis? Und was spielt hier in dem Zusammenhang move_uploaded_file für eine Rolle?

Wenn ein User eine Datei hochlädt, wird diese im Temp-Verzeichnis des Servers zwischengespeichert, bis ein Skript damit etwas macht. Also sozusagen "zwischengelagert". Mit move_uploaded_file verschiebt man normalerweise die Datei dann in ein Verzeichnis, wo man sie hin haben will, wobei man das in deinem Fall glaube ich sogar weglassen kann, da die Datei ja auf einen FTP-Server "weitergeleitet" wird.

Luckie 25. Okt 2005 23:40

Re: [PHP] PHP Funktion aus Formular aufrufen
 
Also, ich habe es jetzt so:
Code:
  <?php
    if ($_POST['sent'] == '1')
    {
      $file = fopen($_FILES['uploadfile']['tmp_name'], 'r');
      upload_file($newpath, $file, FTP_BINARY);
      $_POST['sent'] = '0';
    }
  ?>
  <form ENCTYPE="multipart/form-data" ACTION="<?=$_SERVER['PHP_SELF'].'?newpath='.$newpath ?>" METHOD=POST>
    <input type="hidden" name="sent" value="1">
    <input NAME="uploadfile" SIZE=75 TYPE="file">
    <input TYPE="submit" VALUE="Send File">
  </form>
Als Fehlermeldung kommt:
Zitat:

Warning: ftp_put() expects parameter 3 to be string, resource given in /var/www/l3s11195/html/Ablage/Privat/WebFTP.php on line 83
Zeile 83 wäre:
Code:
$result = ftp_put($conn, $dest, $source, $mode);
ist ja auch logisch, fopen gibt ja ein Dateihandle zurück, da müsste aber der Pfad und der Name der lokalen Datei stehen. Wie bekomm eich den aus dem Formular raus?

Hardgecodet:
Code:
upload_file($newpath.'\style.css', 'H:\Downloads\style.css', FTP_BINARY);
kommt die Meldung:
Zitat:

Warning: ftp_put(): Unable to access H:\Downloads\style.css in /var/www/l3s11195/html/Ablage/Privat/WebFTP.php on line 83

faux 25. Okt 2005 23:47

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

Sorry. Hab gerade ftp_fput() mit ftp_put() verwechselt. DU hast natürlcih recht, dass 1. die Argumente richtig waren und 2. kein Dateizeiger sondern ein String mit dem Pfad erwartet wird.

Luckie 25. Okt 2005 23:53

Re: [PHP] PHP Funktion aus Formular aufrufen
 
Roter Kasten.

Woran kann es jetzt liegen, dass er auf die Datei keinen Zugriff hat? Und wie komme ich an den Text aus dem Edit des Formulares?

Puh, das wird eine schwere Geburt. Aber dann ist für heute auch schluss. Versprochen. ;)

faux 26. Okt 2005 00:00

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

Zitat von Luckie
Hardgecodet:
Code:
upload_file($newpath.'\style.css', 'H:\Downloads\style.css', FTP_BINARY);
kommt die Meldung:
Zitat:

Warning: ftp_put(): Unable to access H:\Downloads\style.css in /var/www/l3s11195/html/Ablage/Privat/WebFTP.php on line 83

Wieso H:\? Das ist doch ein Windows-Verzeichnis, wies aussieht, (/var/www/l3s11195/...) hast du aber einen LINUX-Server...:?

Probiere mal so:
upload_file($_FILES['uploadfile']['tmp_name'], '/style.css', FTP_BINARY);

Dann müsste die Datei direkt aus dem Temp-Verzeichnis auf den FTP geladen werden, und zwar mit dem Namen style.css. (Wieso gerade style.css, dann wird ja immer die Datei überschrieben).

Luckie 26. Okt 2005 00:05

Re: [PHP] PHP Funktion aus Formular aufrufen
 
Logisch, ich will ja eine Datei von meinem lokalen Rechner auf meinen Webspace laden. Und den Dateinamen habe ich nur erstmal hardgecodet, um zu probieren, ob es überhaupt funktioniert. Das soll natürlich nicht so bleiben.

Zitat:

Dann müsste die Datei direkt aus dem Temp-Verzeichnis auf den FTP geladen werden
Und wie kommt die dort hin? Also wenn man über das Temp-Verzeichnis geht, dann würde ich mir das so vorstellen: mit ftp_put lade ich sie in das Temp-Verzeichnis und mit move_uploaded_file würde ich sie dann in das eigentliche Zielverzeichnis verschieben.

Aber egal wie, später irgendwann muss ich ja auf den Text aus dem Eingabefeld zugreifen, wie komme ich da dran?

faux 26. Okt 2005 00:07

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

Zitat von Luckie
Aber egal wie, später irgendwann muss ich ja auf den Text aus dem Eingabefeld zugreifen, wie komme ich da dran?

Asooo... Du meinst das FILE-Feld? Das erreichst du wie gesagt über $_FILES. Oder meinst du ein anderes Feld?

Flocke 26. Okt 2005 07:14

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

Zitat von Luckie
Logisch, ich will ja eine Datei von meinem lokalen Rechner auf meinen Webspace laden. Und den Dateinamen habe ich nur erstmal hardgecodet, um zu probieren, ob es überhaupt funktioniert. Das soll natürlich nicht so bleiben.

Luckie :roll:
PHP wird auf dem Server ausgeführt - der weiß nichts von deinen lokalen Verzeichnissen. Wenn du die Datei in einer form als Upload-Feld definiert hast, dann ist deren Inhalt zusammen mit der Anfrage schon auf den Rechner übertragen worden und steht jetzt eben in der angesprochenen temporären Datei.

Du machst jetzt also einen FTP-Upload vom Server auf den Server (derselbe Rechner), um die Save-Mode-Restriktionen zu umgehen.

Luckie 26. Okt 2005 09:28

Re: [PHP] PHP Funktion aus Formular aufrufen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Jetzt verstehe ich gar nichts mehr. :? Wie kann eine 5 MB Datei, die ich mit "Durchsuchen" ausgewählt habe, nach Schließen des Dialoges schon auf dem Server sein? Das PHP auf dem Server ausgeführt wird ist mir klar, aber wenn da steht, dass man mit dftp_put eine Datei hochladen kann, dann verstehe ich darunter vom lokalen Rechner auf den Server. Die anderen FP-Scripte haben auch mit FTP-put gearbeitet:

Code:
switch ($action) {
case 'upload':
$r = $ftp->put(
$dir.$_upload['uploadfile']['name'],
$_upload['uploadfile']['tmp_name']);
if ($r) {
echo 'Fileupload erfolgreich';
 } else {
echo 'Fileupload leider fehlgeschlagen';
}
Code:
function put ( $file, $sourcefile ) {
return ftp_put(
$this->conn,
$file,
$sourcefile,
FTP_BINARY);
}
das mal der Code aus einem Script, aber ich habe das nicht zusammengebracht, deswegen habe ich hier gefragt. Das ganze Script mal im Anhang.

Gerade habe ich das hier gefunden:
HTML-Datei:
Code:
<html>
<head>
<title>Datei Upload</title>
</head>
<body bgcolor="#FFFFFF" text="#000000">
   <h1>Schicken Sie uns ihre Texte</h1>
   <form action="ftpbeispiel.php" enctype="multipart/form-data" method="POST">
      

 W&auml;hlen Sie eine Textdatei (txt, html usw.)
      von Ihrem Rechner aus:


      <input name="lokale_datei" type="file"
      size="50" maxlength="1024" accept="text/*">
      </p>
      

Verzeichnis/Zieldatei


      <input type="text" name="zieldatei">
      </p>
      



      <input type="submit" name="Abschicken"
      value="Abschicken">
      </p>
   </form>
</body>
</html>
PHP-Datei:
Code:
<?php
// Diese Variablen bitte aendern
$ftp_server = "luckie-online.de";
$benutzername = "foo";
$passwort = "bar";

// Die Verbindung herstellen
$connection_id = ftp_connect("$ftp_server");

// Mit Benutzername und Kennwort anmelden
$login_result = ftp_login($connection_id, "$benutzername", "$passwort");

// überprüfen ob alles gutgegangen ist
if ((!$connection_id) || (!$login_result)) {
   echo "<H1>Ftp-Verbindung nicht hergestellt!<H1>";
   echo "

Verbindung mit ftp_server
   als Benutzer $benutzername nicht möglich!</p>";

   die;
} else {
   echo "

Verbunden mit ftp_server als Benutzer $benutzername </p>";
}
// Hochladen der datei
$upload = ftp_put($connection_id, $zieldatei, $lokale_datei, FTP_ASCII);

// Upload-Status überprüfen
if (!$upload) {
   echo "

Ftp upload war fehlerhaft!</p>";
} else {
   echo "

Datei $slokale_datei auf $host als $zieldatei geschrieben </p>";
}

// Schließen der Verbindung
ftp_quit($connection_id);
?>
Das funktioniert wunderbar, aber was anderes mache ich doch auch nicht. :wall:

Luckie 26. Okt 2005 10:57

Re: [PHP] PHP Funktion aus Formular aufrufen
 
So, ich habe es jetzt geschaft. :)

Code:
  <?php
    if ($_POST['sent'] == '1')
    {
      echo '<pre>';
      $destfile = 'test.xyz';
      echo $uploadfile;
      upload_file('/'.$newpath.'/'.$destfile, $uploadfile, FTP_BINARY);
      echo '</pre>';
    }
  ?>
  <form ENCTYPE="multipart/form-data" ACTION="<?=$_SERVER['PHP_SELF'].'?newpath='.$newpath ?>" METHOD=POST>
    <input type="hidden" name="sent" value="1">
    <input NAME="uploadfile" SIZE=75 TYPE="file">
    <input TYPE="submit" VALUE="Send File">
  </form>
Nur einen Haken hat es. echo $uploadfile ergibt:
Zitat:

/var/www/l3s11195/phptmp/phpZb1pCQ
Aber wie komme ich an den Dateinamen dran, wie er lokal lautet?

Habs:
Code:
  <?php
    if ($_POST['sent'] == '1')
    {
      echo '<pre>';
      upload_file('/'.$newpath.'/'.$_FILES['uploadfile']['name'], $uploadfile, FTP_BINARY);
      echo '</pre>';
    }
  ?>
  <form ENCTYPE="multipart/form-data" ACTION="<?=$_SERVER['PHP_SELF'].'?newpath='.$newpath ?>" METHOD=POST>
    <input type="hidden" name="sent" value="1">
    <input NAME="uploadfile" SIZE=75 TYPE="file">
    <input TYPE="submit" VALUE="Send File">
  </form>
Nur noch eins, wenn ich die Seite aktualisiere mit F5, dann will er wieder was hochladen, kann ich das $_POST['sent'] == '1' irgendwie wieder zurücksetzen?

Und wenn ich ein zweites Formular habe, kann ich dann dies machen:
Code:
  <?php
    if ($_POST['sent'] == '1')
    {
      echo '<pre>';
      upload_file('/'.$newpath.'/'.$_FILES['uploadfile']['name'], $uploadfile, FTP_BINARY);
      echo '</pre>';
    }
    else if ($_POST['sent'] == '2')
    {
       deletefile(...);
    }
  ?>
Nur noch diese Kleinigkeit und ich bin super glücklich. :angel:

Flocke 26. Okt 2005 11:16

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

Zitat von Luckie
Wie kann eine 5 MB Datei, die ich mit "Durchsuchen" ausgewählt habe, nach Schließen des Dialoges schon auf dem Server sein?

Die Datei wird erst übertragen wenn du das Formular abschickst.

Zitat:

Zitat von Luckie
Nur einen Haken hat es. echo $uploadfile ergibt:
Zitat:

/var/www/l3s11195/phptmp/phpZb1pCQ
Aber wie komme ich an den Dateinamen dran, wie er lokal lautet?

Wie oben geschrieben - das ist die übertragene Datei - die liegt schon auf deinem Server.

Jetzt überleg' noch mal
1. wie soll der Webserver denn auf eine Datei auf deiner Platte kommen
2. wie soll ein FTP-Kommando, dass auf dem Server abgesetzt wird, eine Datei von deiner Platte übertragen?

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();
    }

Flocke 26. Okt 2005 12:38

Re: [PHP] PHP Funktion aus Formular aufrufen
 
1. du hast keine leere Seite, weil du mit header/Location ja den Browser anweist, eine neue Seite zu laden.
2. Hättest mal ins PHP-Manual zu "ob_start" sehen sollen: das muss ganz am Anfang stehen, bevor überhaupt irgendeine Ausgabe gemacht wurde.

Problem ist:
1. Wenn du keine Redirection nimmst (also header/Location), dann schickt der Browser bei F5 die Daten noch einmal weg.
2. Wenn du eine Redirection machen willst, dann bevor du überhaupt irgendetwas mit "echo" ausgibst (da darf auch kein HTML vorher sein).

Andere Alternative: der Holzhammer 8) - mach' die Umleitung mit JavaScript.

Code:
echo '<script type="text/javascript">location.href="' . htmlspecialchars($_SERVER['PHP_SELF']); . '"; </script>';

xaromz 26. Okt 2005 12:43

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

Zitat von Luckie
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']);

Du gibst ja vor dem Header schon was aus. Danach kannst Du den Header nicht mehr ändern.

Gruß
xaromz

Luckie 26. Okt 2005 13:53

Re: [PHP] PHP Funktion aus Formular aufrufen
 
Also mit
Code:
<?php
  header('Location: ' . $_SERVER['REQUEST_URI']);
  exit;
?>
ganz am Anfang der Seite, hat er sie gar nicht erst geladen. Als wenn er sie sich selber immer wieder die Datei schickt.

Und:
Code:
  <?php
    ob_start();
    echo '

';
    if ($_POST['sent'] == '1')
    {
      upload_file('/'.$newpath.'/'.$_FILES['uploadfile']['name'], $uploadfile, FTP_BINARY);
      echo $_FILES['userfile']['error'];
Hat auch nichts genutzt.

also ich denke, wenn das nicht klappt, werde ich wohl auf eine extra Seite ausweichen müssen. :?

Luckie 26. Okt 2005 14:55

Re: [PHP] PHP Funktion aus Formular aufrufen
 
So, ich habe es jetzt mit einer extra Datei gemacht, das war mir dann doch zu umständlich. Ich betrachte damit das Thema als erledigt. Besten Dank noch mal für eure Mühe. :thumb:

Wenn LittleWebFTP fertig ist, stelle ich es euch hier vor. ;)

Luckie 26. Okt 2005 22:30

Re: [PHP] PHP Funktion aus Formular aufrufen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier mal ein kleiner Vorgeschmack oder Teaser wie man so schön auf Neudeutsch sagt: Screenshot im Anhang. Nur damit ihr seht, dass es sich gelohnt hat und eure Mühe nicht umsonst war. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:04 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