Seite 1 von 1

Absenden von Formular -> Weiterleitung auf Loginseite

Verfasst: Do 6. Apr 2006, 15:04
von muhle
Hallo,

ich habe eine ausgabe für ein gästebuch-modul geschrieben. es steckt noch in den kinderschuhen.

hier der code.

Code: Alles auswählen

<?PHP

$db = new DB_Contenido; 

if(isset($_POST['eintragen'])){
  $benutzer = $_POST['username'];
  $comment = $_POST['yourcomment'];
  
  $eintragungsdatum = date("d.m.Y");
  
  $queryinsert = "INSERT INTO `con_guestbook` ( `gb_id` , `gb_data` , `gb_user` , `gb_text` ) VALUES ('', '$eintragungsdatum', '$benutzer', '$comment')";
  

  $db->query($queryinsert);

                           
}

?>
<form method="post" action="<?PHP echo $auth->url(); ?>">
<table>
  <?PHP 
  if(isset($_POST['eintragen'])){
  ?>
  <tr>
    <td colspan="2">Herzlichen Dank f&uuml;r Deinen Eintrag!</td>
  </tr>
  <?PHP 
  }
  ?>
  <tr>
    <td>Name/Vorname:</td>
    <td><input type="text" name="username" /></td>
  </tr>
  <tr>
    <td>Dein Kommentar:</td>
    <td><textarea name="yourcomment" rows="4" cols="20"></textarea></td>
  </tr>
  <tr>
    <td></td>
    <td><input type="submit" value="eintragen" name="eintragen" /></td>
  </tr>
</table>
</form>
<!-- G&auml;stebuchausgabe -->
<?PHP
  $abfrage = "SELECT * FROM con_guestbook ORDER BY gb_id DESC";
  $erg = $db->query($abfrage);
    
  while ($row = mysql_fetch_row($erg)) {
?>
<table>
  <tr>
    <td>Eintrag von:</td>
    <td><?PHP echo $row[2]; ?></td>
  </tr>
  <tr>
    <td>Datum:</td>
    <td><?PHP echo $row[1]; ?></td>
  </tr>
  <tr>
    <td>Kommentar:</td>
    <td><?PHP echo $row[3]; ?></td>
  </tr>
</table>
<?PHP
  }
  
?>
Meine Frage:
Wenn ich das Formular auslöse, dann werde ich immer auf eine Seite von Contenido geleitet, wo ich mich anmelden muss. Das passiert auch nur immer bei der "INSERT" Query. Aus der DB lesen funktioniert perfekt. Was ist an dem Code falsch?
Muss ich noch etwas einbauen, damit die Anfrage "autorisiert" ist?

Ich nutze Contendio 4.6.8.

Danke für die Hilfe.

Verfasst: Do 6. Apr 2006, 15:21
von HerrB
Bitte wirf mal einen Blick in vorhandene Module, um die Syntax der in Contenido vorhandenen Objekte zu beachten.

Z.B.:

$db->query...

while ($db->next_record()) {
...
... echo $db->f("gb_user");
...
}

Gab es nicht schon ein Gästebuch-Modul? Hast Du mal gesucht? Ansonsten ist Dein Gästebuch-Modul nicht sicher in Bezug auf SQL-Injection. Mit dem aktuellen Code kann jeder alles mit der DB machen...

Gruß
HerrB

Verfasst: Do 6. Apr 2006, 21:33
von muhle
Hallo HerrB,

danke für deine Antwort. Es geht jedoch nicht darum um aus der DB auszulesen, denn das funktioniert bereits.

Vielmehr geht es darum, in die DB zu schreiben... Und das funktioniert eben nicht... Muss man ein spezielles Code-Snippet einbauen, z.B. eine Variable setzen, damit man am System autorisiert ist?

Verfasst: Do 6. Apr 2006, 22:43
von HerrB
Das sollte eigentlich gehen (und Dich zumindest nicht auf die Error-Seite bringen).
Es geht jedoch nicht darum um aus der DB auszulesen, denn das funktioniert bereits.
War auch nur ein Beispiel. Wenn man sich an eine Syntax hält, wird es einfacher...

Wirf mal einen Blick in die conlib, in der DB_Contenido definiert ist - dort findet sich vielleicht etwas zu dem query().

Beachte die Sicherheit.

Gruß
HerrB