Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

wie funktioniert der Formularaufruf, wenn sich die PHP-Datei nach einem Klick selbstaufrufen soll?

muss man da was in der PHP.INI einstellen, das es auf dem Foxserv funktioniert?

weil bei mir will er das nicht ausführen!

wenn ich dann auf Weiterleiten drücke steht in der Url: http://www.dfbl.org/..../$PHP_SELF!

was habe ich da falsch gemacht?

Beispiel wäre nicht schlecht!

Geschrieben

Hallo,

ich weiss nicht wie deine Datei aussieht, aber damit du $PHP_SELF benutzen kannst, muss es a) eine Datei sein die vom PHP Interpreter geparst wird (d.h. vermutlich die Endung .php haben B) muss das $PHP_SELF in nem PHP-Block stehen.

Das heisst du koenntest es z.b. so machen:

<form action="<?php echo $PHP_SELF?>" method="post">

....

gruss

Michael

Geschrieben

folgendes Programm:


<?php
if ($sent & $name)
{
echo <<<FORMANSWER
Sie haben folgende Nachricht gesendet:<p />
<b>Ihr Name:</b> $name<br />
<b>E-Mail:</b> $email<br />
<b>Bewertung:</b> $rank<br />
<b>Ihre Nachricht:</b> <br />
<div style="background-color:#DDDDDD">$message</div>
<b>Gekauft bei: </b>$purchase
<form method="post" action="$PHP_SELF">
<input type="submit" value="Neue Nachricht senden?" />
</form>
FORMANSWER;
}
else
{
?>
016: <h3>Wie hat Ihnen das Buch bisher gefallen?</h3>
017: <form method="post" action="$PHP_SELF">
018: <table>
019: <tr>
020: <td>Mein Name:</td>
021: <td><input type="text" name="name" size="50" /></td>
022: </tr>
023: <tr>
024: <td>Meine E-Mail:</td>
025: <td><input type="text" name="email" size="50" /></td>
026: </tr>
027: <tr>
028: <td>Bewertung:</td>
029: <td>
030: 1<input type="radio" name="rank" value="1" />
031: 2<input type="radio" name="rank" value="2" checked="checked" />
032: 3<input type="radio" name="rank" value="3" />
033: 4<input type="radio" name="rank" value="4" />
034: 5<input type="radio" name="rank" value="5" />
035: (Schulnoten)
036: </td>
037: </tr>
038: <tr>
039: <td valign="top">Nachricht:</td>
040: <td>
041: <textarea cols="30" rows="6" name="message">Ihre Nachricht...</textarea>
042: </td>
043: </tr>
044: <tr>
045: <td>Wo haben Sie es gekauft?</td>
046: <td>
047: <select size="1" name="purchase">
048: <option value="Fachbuchhandel" />Fachbuchhandel
049: <option value="Kaufhaus" />Kaufhaus
050: <option value="Online" />Online
051: <option value="Verlag" />Verlag
052: <option value="Nur geliehen" />Nur geliehen
053: </select>
054: </td>
055: </tr>
056: <tr>
057: <td colspan="2">
058: <input type="submit" value="Absenden" />
059: <input type="reset" />
060: <input type="hidden" name="sent" value="1" />
061: </td>
062: </tr>
063: </table>
064: </form>
065: <?php
} /* end if */
?>
[/PHP]

bringt folgende Fehlermeldung:

Parse error: parse error, unexpected $ in C:\FoxServ\www\intern\uebungen\bsp20.php on line 71

das ist die letzte Zeile im Programm!

weis nicht wo der einen Fehler sieht!

weil das Programm habe ich von einer CD wo bei meinem PHP-Buch dabei war!

hoffe, einer kann mir helfen!

nochwas: Als erstes kommt ein Eingabebildschirm und danach sollen die Daten in der if-Anweisung wieder ausgegeben werden, das klappt nicht, was ist falsch daran?

Geschrieben

1. Habe ich das mit dem FORMANSWER noch nie gesehen. Lass das weg. Ist wahrscheinlich Müll. Ich weis es aber nicht. Mach mal einzelne echos draus:

......

echo "<b>Ihr Name:</b> {$name} <br />";

......

Der nächste Fehler wird hier sein:

017: <form method="post" action="$PHP_SELF">

ändern in:

017: <form method="post" action="<?=$PHP_SELF ?>">

Im Normalfall ist es so, wenn ein Fehler in der letzten Zeile angezeigt wird, hast Du irgendwo vergessen eine if Abfrage oder eine Schleife oder ähnliches zu schließen.

Als nächstes würde ich mir mal gedanken über die Formatierung des Quelltextes machen. Ganz so professionell sieht das nicht aus!

Geschrieben

ich habe das Programm auch von einer CD-Runterkopiert.

das mit dem

echo >>>Anweiser

.....

>>>Anweiser

funktioniert nicht immer, das ist das komische!

und deswegen habe ich das mit $PHP_SELF schon geschafft mit einem anderen Programm!

Geschrieben

Hi,

bin neu hier :D

Na dann wollen wir mal:

Du hast dir aber ein tolles Buch gekauft. Ok jeder fängt klein an ;)

Sooo ich habs für dich mal eben umgeschrieben! Weils so total falsch war. Heutzutage arbeiten die PHPler nicht mehr mit Globalen Variablen sondern mit Superglobals. Ist ein sehr wichtiger Sicherheitsstandpunkt! Ist ab der Version 4.2 so halt gesetzt. Gabs aber vorher auch schon!

Jedenfalls solltest du die Variablen immer so schreiben wie ich!

Hier mal mein veränderter Code:


<?php
if($_POST['action']=="senden")
{
echo "Sie haben folgende Nachricht gesendet:<p />";
echo "<b>Ihr Name:</b> ".$_POST['name']."<br />";
echo "<b>E-Mail:</b> ".$_POST['email']."<br />";
echo "<b>Bewertung:</b> ".$_POST['rank']."<br />";
echo "<b>Ihre Nachricht:</b> <br />";
echo "<div style=\"background-color:#DDDDDD\">".$_POST['message']."</div>";
echo "<b>Gekauft bei: </b>".$_POST['purchase']."";
}
?>
<h3>Wie hat Ihnen das Buch bisher gefallen?</h3>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="hidden" name="action" value="senden">
<table>
<tr>
<td>Mein Name:</td>
<td><input type="text" name="name" size="50" /></td>
</tr>
<tr>
<td>Meine E-Mail:</td>
<td><input type="text" name="email" size="50" /></td>
</tr>
<tr>
<td>Bewertung:</td>
<td>
1<input type="radio" name="rank" value="1" />
2<input type="radio" name="rank" value="2" checked="checked" />
3<input type="radio" name="rank" value="3" />
4<input type="radio" name="rank" value="4" />
5<input type="radio" name="rank" value="5" />
(Schulnoten)
</td>
</tr>
<tr>
<td valign="top">Nachricht:</td>
<td>
<textarea cols="30" rows="6" name="message">Ihre Nachricht...</textarea>
</td>
</tr>
<tr>
<td>Wo haben Sie es gekauft?</td>
<td>
<select size="1" name="purchase">
<option value="Fachbuchhandel" />Fachbuchhandel
<option value="Kaufhaus" />Kaufhaus
<option value="Online" />Online
<option value="Verlag" />Verlag
<option value="Nur geliehen" />Nur geliehen
</select>
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="Absenden" />
<input type="reset" />
</td>
</tr>
</table>
</form>
[/PHP]

Er geht, hab ihn selbst getestet :D Ansonsten halt nochmal fragen oder so!

Gruß cg

Geschrieben

nur mal so am rand

das sollte bei PHP Versionen unter 4.1.0 nicht laufen: $_SERVER['PHP_SELF']

vielleicht besser

$HTTP_SERVER_VARS['PHP_SELF']

verwenden das geht auch drunter

und der fehler oben war

echo <<< WERT

WERT;

vor wert darf kein leerzeichen sein sonst erkennt er das nicht als ende des blocks

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...