[PHP] Nicht korrekt?

slowpoke

Ensign
Registriert
Feb. 2007
Beiträge
241
Hi,
ich hab mich mal wieder in PHP versucht...

Wenn ich auf den "Abschicken" Button klicke, passiert gar nichts. Es sollte ja eigentlich dann eine andere Seite geöffnet werden. Was hab ich wieder falsch gemacht?

HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Gästebuch</title>
</head>

<body bgcolor="#FFFFFF">

<?php
if ($action == "add") {

if ($name == "" || $mail == "" || $text == ""){
echo "<b> Du hast nicht alle Felder ausgefüllt! </b> <br>";
echo "Klicke auf den Back-Button deines Browsers";
}
else{

if ($www == "") {
$eintrag = "a href=\"mailto:$mail\">$name</a><br \>$text";
}
else{
$eintrag = "<a href=\"mailto:$mail\">$name</a>

<br \><a href=\"$www\">$www</a>$text<hr><br><br>";
}

$datei = fopen("gaestebuch.txt", "w+");
fputs($datei,$eintrag);
fclose($datei);
echo "Danke <i>§name</i> für deinen Eintrag";
}

}

else{



?>



<b style="font-family:Verdana, Arial, 'Times New Roman'; font-size:18px"> Eintragen in mein Gästebuch </b>
<br />

<form action="eintragen.php?action=add" method="get">

<span style="font-family:Verdana, Arial, 'Times New Roman'; font-size:12px;">

Dein Name: <input type="text" name="name" size="24" />
<br />
e-Mail: <input type="text" name="e-Mail" size="24" />
<br />
Homepage: <input type="text" name="Homepage" size="24" />

<br />

Dein Eintrag: <textarea name="text" cols="40" rows="5" /> </textarea>

<br />

<input type="submit" name="Abschicken" size="24" />



</span>
</form>
<?php
}
?>
</body>
</html>


ich hab so das Gefühl, ich hätte noch irgendwas mit dem Abschicken-Button machen müssen...aber was?

Vielen Dank
Slowpoke
 
also was dein Problem betrifft, "gar nüx" - passt doch alles, wenn man auf den Knopf drückt, wird bei mir eine neue Seite geladen...(ersetze bitte deine varibeln die du über "get" übergiebst in $_GET['name der Variabel']
und noch besser wäre wenn du es mit der POST Methode machen würdest, da giebts dann keine maximalen Längen mehr für einen Gästebuch Eintrag... ;)

gruß:: clemix
 
Hast recht. Aber wenn ich die Datei hochlade auf den Server, der anders als mein PC PHP unterstützt, passiert rein gar nichts wenn ich auf "Abschicken" klicke.

Hier mal die andere Datei....

HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Gästebuch</title>
</head>

<body bgcolor="#FFFFFF">

<b> Mein Gästebuch </b>
<br />
<a href"eintragen.php"> Hier kannst du Dich eintragen <br />
<br />

<?php
include ("gaestebuch.txt"),
?>


</body>
</html>


Hab ich hier vielleicht was falsch gemacht? In der ersten Datei habe ich inzwischen "get" durch "post" ersetzt.

Gruß
Slowpoke
 
Ist Wahrscheinlich regster_globals auf off geschaltet(Was auch richtig ist)
Du musst aber deine Variablen ändern.
Musst das dann immer so schreiben:
$_POST['action']

Grüße

tewes
 
Wohin denn? In den HTML Teil? Müsste doch eigentlich bei PHP irgendwo untergebracht werden, oder? Denn POST steht ja jetzt in HTML...

Ich verstehe nicht so ganz, was ich jetzt wo ändern soll, wie gesagt, habe erst vor kurzem mal in PHP reingeschnuppert :)
 
Der korrigierte Quelltext:
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Gästebuch</title>
</head>
<body bgcolor="#FFFFFF">
<?php
$action = $_POST['action'];
$name = $_POST['name'];
$mail = $_POST['e-Mail'];
$text = $_POST['text'];
$www = $_POST['Homepage'];
if ($action == "add") {
if ($name == "" || $mail == "" || $text == "") {
echo "<b> Du hast nicht alle Felder ausgefüllt! </b> <br>";
echo "Klicke auf den Zurück-Button deines Browsers";
} else {
if ($www == "") {
$eintrag = "a href=\"mailto:$mail\">$name</a><br \>$text";
} else {
$eintrag = "<a href=\"mailto:$mail\">$name</a>
<br \><a href=\"$www\">$www</a>$text<hr><br><br>"; }
$datei = fopen("gaestebuch.txt", "w+");
fputs($datei,$eintrag);
fclose($datei);
echo("Danke <i>".$name."</i> für deinen Eintrag");
}
}
else
{
echo('
<b style="font-family:Verdana, Arial, "Times New Roman"; font-size:18px"> Eintragen in mein Gästebuch </b>
<br />
<form method="post">
<span style="font-family:Verdana, Arial, "Times New Roman"; font-size:12px;">
Dein Name: <input type="text" name="name" size="24" /><br />
e-Mail: <input type="text" name="e-Mail" size="24" /><br />
Homepage: <input type="text" name="Homepage" size="24" /><br />
Dein Eintrag: <textarea name="text" cols="40" rows="5" /> </textarea> <br />
<input type="hidden" name="action" value="add" />
<input type="submit" name="Abschicken" size="24" />
</span>
</form> ');
}  ?>
</body>
</html>

sorry, dass ich grade zu faul bin es zu erklären ;)

meines habe ich übrigens so gelöst:
PHP:
<html>
 <head>
  <meta name="language" content="deDE">
 </head>
 <body>
  <font>Hier k&ouml;nnen Sie sich in mein G&auml;stebuch eintragen. Aus Sicherheitsgr&uuml;nden wird ihre IP-Adresse (<?php echo(getenv(REMOTE_ADDR)); ?>) geloggt.<br>
  Ich behalte mir vor Eintr&auml;ge zu l&ouml;schen.<br>
  <?php
   $path = 'guestbook.html';
   $ctext = $_POST[ctext];
   $nick = $_POST[nick];
   include($path);
   if ($ctext != '') {
   if ($nick != '') {
   $text = '<br><br><b>'.$nick.' ('.getenv(REMOTE_ADDR).') am '.date(j).'.'.date(n).'.'.date(Y).' um '.date(G).':'.date(i).':</b> <br>'.$ctext;
   } else {
    $text = '<br><br><b>'.getenv(REMOTE_ADDR).' am '.date(j).'.'.date(n).'.'.date(Y).' um '.date(G).':'.date(i).':</b> <br>'.$ctext; }
    $f = fopen($path,'r+');
    $input = fread($f,filesize($path));
    flock($f,2);
    fwrite($f,$text);
    flock($f,3);
    fclose($f);
    echo($text); }
  ?>
  <br><hr><br>
  <u>Kommentar hinzuf&uuml;gen</u> (Zeilenumbr&uuml;che k&ouml;nnen mit < br > [ohne leerzeichen] eingef&uuml;gt werden)<br>
  HTML Code ist erlaubt.<br><br>
  <form name="comment" method="post">
   Nick: <input name="nick" size="40"><br>
   <textarea name="ctext" cols="40" rows="10">Ihr Kommentar...</textarea><br>
   <input type="submit" value="Abschicken" >
  </form>
  </font>
 </body>
</html>
 
Zuletzt bearbeitet:
Danke :)
Hauptsache ist eh erstmal, dasss es funktioniert. Das gibt dann wieder einen Motivationsschub und es kann weitergehen :)

Gruß
Slowpoke
 
will ja nicht komisch wirken, aber hat sich einer mal meinen Beitrag durchgelesen?
 
der Unterschied zwischen unseren Lösungen ist doch nur der, dass du den Variabeln den entsprechenden Inhalt des POST Arrays zuweist und ich gleich die entsprechenden Inhalte des POST Arrays verwenden würde.....

lol :
clemix
 
Das war eher als Beispiel gedacht, da ich den Inhalt des Gästebuchs auch gleich anzeige, also im Prinzip schon ein ganzes Gästebuch. Außerdem wird noch die IP mitprotokolliert.
Sollte keine Alternative zu deiner Lösung darstellen ;)

mfg
 
Ich habe dich nicht ignoriert BadByte, ich war nur tatsächlich nicht in der Lage das umzusetzen. Habe mir jetzt ein Buch über PHP gekauft...
Ich les' mir dein Geschriebenes in 2 Tagen nochmal durch ;)

Gruß
Slowpoke
 
Zurück
Oben