29725
Goto Top

Problem mit globaler SERVER Variablen - PHP SELF - Datei nicht gefunden

Halle Freunde,
Es handelt sich bei meinem Beispiel um ein anscheinend veraltetes Skript aus einem Buch, welches ich meinen Bedürfnissen angepasst habe. (Eine Dateneingabemaske für einen Gästebucheintrag) Die eingegebenen Werte sollen nun als Variablen zur Weiterverarbeitung genutzt werden können indem ich via $_POST['name des Formularfeldes'] darauf zugreife.

Mein Code sieht so aus : (BITTE NICHT AUF XSS-Problematik hinweisen! Code ist vereinfacht dargestellt.)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
<html>
<head>
<title></title>
</head>
<body align="center">  
<?php
if (!$_POST['GB_entry_sending'] && !$_POST['name']) {  

?>
<style type="text/css">  
#GB            { position:relative; margin-top:10px; background:url(http://localhost/GB_entrymask1.jpg)no-repeat center; height:400px; width:500px;}
#GB .name      { position:relative; margin-top:50px; margin-right:70px; }
#GB .company   { position:relative; margin-top:15px; margin-right:70px; }
#GB .email     { position:relative; margin-top:15px; margin-right:70px; }
#GB .title     { position:relative; margin-top:40px; margin-right:70px; }
#GB .homepage  { position:relative; margin-top:10px; margin-left:190px; }
#GB .message   { position:relative; margin-top:15px; }
#GB .submit    { }
#GB .reset     { }
</style>

<form method="POST" action="  
<code type=php"><?php echo $PHP_SELF ?>
">  
<div id="GB" align="center">  
  <input class="name" type="text" name="GB_entry_name" value="" size="35"><br>  
  <input class="company" type="text" name="GB_entry_company" value="" size="35"><br>  

  <input class="email" type="text" name="GB_entry_email" value="" size="35"><br>  
  <input class="title" type="text" name="GB_entry_title" value="" size="35"><br>  
  <textarea class="message" name="GB_entry_message" value="" rows="7" cols="56"></textarea><br>  
  <input class="homepage" type="text" name="GB_entry_homepage" value="" size="35"><br>  
  <input class="submit" type="submit" name="GB_entry_submit" value="Send" size="15">  
  <input class="reset" type="reset" name="GB_entry_reset" value="Reset" size="15">  
  <input type="hidden" name="GB_entry_sending" value="1">  
</div>
</form>
<code type="php>
<?php
} else {
echo "Dein Gästebucheintrag wurde erstellt.";
}
?>

<code type="html>
</body>

</html>


Mein erwüschtes Ergebnis sollte sein das die eingegebenen Formulardaten nun mit Aufrufen wie diesem als Variablen erreichbar sind:
...
echo "$_POST['name'] hat einen Beitrag geschrieben.";  
...



Mein Problem:
Nach Eingabe der Daten und drücken von SUBMIT, erhalte ich eine Fehlermeldung vom Browser:
FEHLER: Datei nicht gefunden.
Die Dateien unter /C:wamp/www/<?php echo $PHP_SELF ?> konnten nicht gefunden werden.

+) Bitte überprüfen Sie die Addresse auf Rechtschreib.... und andere Fehler.
+) Bitte überprüfen Sie ob die Adresse umbenannt, gelöscht oder verschoben wurde.

Erwarten würde ich nach Drücken von Submit aber die Meldung "Dein gB-Eintrag wurde erstellt."


Folgende Einstellungen habe ich bisher verändert (und ebenfalls den Code entsprechend verändert):
PHP-Einstellung safe_mode="off" - keine Veränderung bei der Umstellung von $SERVER['PHP_SELF'] auf $PHP_SELF
short_tag_handle="on" - keine Veränderung bei den PHP Aufrufen von <?php zu <?


Als Hobbyprogrammierer hoffe ich, ich habe mein Problem klar dargestellt und jemand hat die passende Lösung "im Nähkästchen"
Danke schon im Voraus.

Content-Key: 165507

Url: https://administrator.de/contentid/165507

Ausgedruckt am: 28.03.2024 um 14:03 Uhr

Mitglied: Guenni
Guenni 02.05.2011 um 16:39:30 Uhr
Goto Top
Hi ChristophD,

eine Anweisung mit ; abschließen:

<?php

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">  

?>

Und lass dir mal den Quelltext anzeigen, ob nach "action" der Scriptname da steht.

Gruß
Günni
Mitglied: 29725
29725 02.05.2011 um 17:00:30 Uhr
Goto Top
Hallo Günni.
Im Quelltext steht vor und nach drücken von Submit KEIN Scriptname da sondern $_SERVER['PHP_SELF']... exakt so wie es im Original der Datei steht (davor) bzw. die Fehlermeldung (danach).

Das abschließende Semikolon habe ich hinzugefügt aber es hat das Problem auch nicht gelöst (steht übrigens auch im Buch ohne - Vl. gibt es dafür einen Grund... Wissende sind angesprochen face-smile). Ebenfalls habe ich es mit
<form action='<?php echo "($_SERVER[PHP_SELF])"; ?>' method="post">  

und
...$action="$_SERVER['PHP_SELF']";  
<form action='<?php echo "$action"; ?>' method="post">  
versucht. ebenfalls kein Erfolg.
Mitglied: Guenni
Guenni 02.05.2011 um 17:44:54 Uhr
Goto Top
Hi Christoph,

wenn im Quelltext $_SERVER['PHP_SELF'] steht, dann wird das Script auch nicht von PHP verarbeitet. Mögliche Fehler:

- falsche Dateiendung, die muß .php sein
- es läuft kein PHP
- es läuft kein Webserver

Gruß
Günni
Mitglied: 29725
29725 02.05.2011 um 20:39:55 Uhr
Goto Top
Hallo Günni,
Danke für den Hinweis. Der Code war ständig einwandfrei, es lag daran das mein Editor die Datei nicht über den Webserver angesprochen hat sondern direkt im Browser übersetzt hat.

Ich glaub ohne Dich wär ich bald verzweifelt auf einer Brücke gestanden face-smile Aber es is ja jetz alles gut... Danke dir.
Mitglied: dog
dog 02.05.2011 um 22:37:00 Uhr
Goto Top
eine Anweisung mit ; abschließen:

Die letzte Anweisung in einem <?php-Block braucht kein Semikolon.
Mitglied: Guenni
Guenni 04.05.2011 um 09:38:23 Uhr
Goto Top
Hi dog,

eine Anweisung mit ; abschließen:
Die letzte Anweisung in einem <?php-Block braucht kein Semikolon.

Ja, das ist richtig. In einem reinen PHP-Script ist auch kein abschließendes ?> nötig.

Aber wenn das Semikolon fehlt ist es doch nötig.

Und so weiter . . .

Warum schlafende Hunde wecken? face-wink

Gruß
Günni