Gästebuch Script funktioniert nicht?!

Auf dem Server ist vermutlich eine Einstellung vorgehttp://www.tutorials.de/newreply.php?do=newreply&noquote=1&p=1211657nommen worden um PHP Scripte sicherer zu machen: Register Globals wurden deaktiviert

Da das Tutorial relativ alt ist, müßte es Theoretisch abgeändert werden.

Einträge wie:
PHP:
 if($action=="save")
müßten mit
PHP:
 if($_GET['action']=="save")
ersetzt werden

Du schaust Dir am besten dazu in der PHP Dokumentation die Einträge über GET und POST an.
Lesenswert:
http://www.php-faq.de/q/q-formular-register-globals.html
http://de3.php.net/reserved.variables
 
Vielen Dank das klappt soweit, nur wenn ich jetzt einen Eintrag machen möchte springt er nich zu action save?! bzw. es wird nichts eingetragen.
 
hab mir das ma durchgelesen und meine Version "aktualisiert" aber man kann immer noch keinen Eintrag machen, man bleibt auf der gleichen Seite und hat wieder das leere Formular vor sich, der Eintrag wurde halt auch nicht gemacht. Er soll beim eintragen doch zu action=save springen, das macht er aber glaube ich nicht denke ich mir mal.

PHP:
<?php
 $id = "HTO01FLYQRXS"; //hier denn usernamen angeben
 $pw = "nelson1"; //hier das passwort eintragen
 $host = "mysql.service"; //hier die datenbankadresse angeben, meistens localhost
 $database = "HTO01FLYQRXS"; //hier den db namen
 $table = "gbook"; //hier den namen der erstellten tabelle angeben

 $conn_id = mysql_connect($host,$id,$pw); //verbindung zur db wird aufgebaut
 mysql_select_db($database,$conn_id); 

 $action = $_POST['action'];
 if($_GET['action']=="save")
 { //wenn $action=save dann wird erst eine mail an den Admin geschickt

  $content = "Der user".$name."hat gerade einen eintrag in ihr gaestebuch vorgenommen!";
  $an = "webmaster@nepheus.de"; //hier deine e-mailadresse eingeben
  $betreff = "Gaestebucheintrag"; //hier kann der betreff der e-mail eingegeben werden

  @mail($an,$betreff,$content,"From: ".$email);

  $datum = time();
  $inhalt = $inhalt;
  $name = ($name) ? $name : "unbekannt";
  mysql_query("INSERT INTO $table (name,email,hp,inhalt,datum) VALUES ('$name','$email','$hp','$inhalt','$datum')"); //daten werden in die db geschrieben
 }


 if($_GET['action']=="neu")
 {
  //wenn $action=neu wird ein formular ausgegeben
  echo "<a href='gaestebuch.php?page=Guestbook'><span class=Stil3>zum Gästebuch</span><p></a>"; // hier kommt die adresse des gbs hin, hier bei einer index.php in die das gb inculdet wird
 }
 else
 {
  echo "<p><a href='".$_SERVER['PHP_SELF']."?action=neu&page=Guestbook'><span class=Stil3>Neuer Eintrag</span><p></a>"; //hier ist der link zu einem neuen eintrag
 }
 
 if($_GET['action']=="neu") 
 {
   //die ausgabe des formulars
 ?>

 <table>
 <form action="<?php echo "".$_SERVER['PHP_SELF']."?action=neu&page=Guestbook;" ?>" method="post">
  <tr>
   <input type="hidden" name="action" value="save">
   <td><span class=Stil3><b>Name:</b></span></td>
   <td><input type="text" name="name"></td>
  </tr>
  <tr>
   <td><span class=Stil3><b>Email:</b></span></td>
   <td><input type="text" name="email"></td>
  </tr>
  <tr>
   <td><span class=Stil3><b>Homepage:</b></span></td>
   <td><input type="text" name="hp"></td>
  </tr>
  <tr>
   <td><span class=Stil3><b>Eintrag:</b></span></td>
   <td><textarea name="inhalt" rows="6" cols="25"></textarea></td>
  </tr>
  <tr>
   <td> </td>
   <td><input type="submit" value="eintragen"></td></form>
  </tr>
 </table>

 <?php
  }
  else 
  {
   //wenn action nicht gesetzt ist, wie beim betreten der seite werden die einträge ausgegeben

  $query = "SELECT * FROM $table ORDER BY datum DESC LIMIT 0,50"; //hier kann die anzahl der ausgegebenen einträge festgelegt werden
  //begonnen wird hier bei eins und mit 50 endet es
 $result = mysql_query($query);

 if(mysql_num_rows($result)) 
 {
  while($row=mysql_fetch_array($result))    
  {
   $name = $row['name'];
   $email = $row['email'];
   $hp = $row['hp'];
   $inhalt = $row['inhalt'];
   $datum = date("d.m.Y/H:i:s",$row['datum']); //das datum wird formatiert

   echo "<table width='90%' valign='top' align='center'><tr><td width='75%' align='left'><b><a href=mailto:".$email.">".$name."</a></b></td><td align='right'>".$datum."</td></tr></table>"; //die ausgabe der daten
   $inhalt = nl2br($inhalt);
   echo "<table width='90%' align='center'><tr><td colspan='2'>".$inhalt;
   echo "</td></tr></table>";
   if($hp=="")
   {
    echo "<tr><td><span class=Stil3>keine Homepage</span></td></tr></table><p>";
   }
   else
   {
    echo "<table width='90%' align='center'><tr><td width='95%'><a href='http://".$hp."' target='new'>".$hp."</a></td><td align=center><a href='#top'><span class=Stil3>top</span></a></td></tr></table><p>";
   }
   flush();
  }
 }
 else
 {
  echo "<span class=Stil3><b>Es sind noch keine Eiträge vorhanden!</b></span>"; //text der angezeigt wird, falls keine einträge vorhanden
 }
}

 if($_GET['action']=="neu")
 {
  echo "<p><a href='".$_SERVER['PHP_SELF']."?page=Guestbook'><span class=Stil3>zum Gästebuch</span></a>";
 }
 else
 {
  echo "<p><a href='".$_SERVER['PHP_SELF']."?action=neu&page=Guestbook'><span class=Stil3>Neuer Eintrag</span></a>";
 }
?>
 
Zuletzt bearbeitet:
Könnte es evt daran liegen, dass du das Formular mit der Action "?action=neu" statt "?action=save" abschickst?

HTML:
	  <a href='gaestebuch.php?page=Guestbook'><span class=Stil3>zum Gästebuch</span><p></a>
 <table>
 <form action="/html/gaestebuch.php?action=neu&page=Guestbook" method="post">
  <tr>
   <input type="hidden" name="action" value="save">
   <td><span class=Stil3><b>Name:</b></span></td>

Vielleicht soll es auch $_POST['action'] == "save" statt $_GET['action'] == "save" heißen.

Schau mal die Zeile in deinem Code an, die über der besagten Stelle steht (mit dem $_GET). Da speicherst du den Inhalt der POST Variable in der Variable $action.
 
jetzt kommt er schonmal ein stück weiter aber er speichert nicht die Daten ab die man im Formular eingibt sondern einfach nur leere Felder.
 
Mach mal des
PHP:
  $name = ($name) ? $name : "unbekannt"; 
  mysql_query("INSERT INTO $table (name,email,hp,inhalt,datum) VALUES ('$name','$email','$hp','$inhalt','$datum')"); //daten werden in die db geschrieben
zu dem
PHP:
  $name = ($_POST['name']) ? $_POST['name'] : "unbekannt"; 
mysql_query("INSERT INTO ".$table." (name,email,hp,inhalt,datum) VALUES ('".$name."','".$_POST['email']."','".$_POST['hp']."','".$_POST['inhalt']."','".$_POST['datum']."')"); //daten werden in die db geschrieben
 
Zuletzt bearbeitet:
Zurück