killa_jan: ph-Code überarbeiten

Hallo,

von einem Freund habe ich einen Quelltext bekommen. Er soll Einträge für ein Gästebuch speichern. Das funktionert auch und ich kann es anwenden. Jedoch funktioniert das nur, wenn man Name, email, eine Webside und den EIntrag selber abgibt. Das sind die Pflichtfelder, die man ausfüllen muss.

Wie muss ich den Code nun umstellen, damit nurnoch der Name und der Eintrag Pflichtfelder sind?

<?php

// Kontrolle ob settings.inc.php vorhanden
if(file_exists("settings.inc.php")) {
 // settings.inc.php includieren
 include("settings.inc.php");
}
else {
 // wenn settings.inc.php nicht vorhanden ist
 echo "<br><br><center><font face="Verdana" size="2"><font color="#FF0000">Datei</font><i> 'settings.inc.php' </i><font color="#FF0000">wurde nicht gefunden!</font></font></center>";
}

// Verbindung zur Datenbank herstellen
 $link = mysql_connect($db_host, $db_user, $db_pass)
               or die("<br><br><center><font face="Verdana" size="2"><font color="#FF0000">Keine Verbindung zur Datenbank m&ouml;glich!</font></font></center>");
        mysql_select_db($db_name)
                 or die("<br><br><center><font face="Verdana" size="2"><font color="#FF0000">Auswahl der Datenbank</font><i> '".$db_name."' </i><font color="#FF0000">fehlgeschlagen!</font></font></center>");

$settings = mysql_query("SELECT * FROM ".$prefix."settings");
while($set=mysql_fetch_array($settings)) {
 $titel      = $set['titel'];
 $steps      = $set['steps'];
 $ueber      = $set['ueber'];
 $titel_bild = $set['titel_bild'];
 $titel_text = $set['titel_text'];
 $ff_ueber   = $set['ff_ueber'];
 $fs_ueber   = $set['fs_ueber'];
 $fc_ueber   = $set['fc_ueber'];
 $ff_normal  = $set['ff_normal'];
 $fs_normal  = $set['fs_normal'];
 $fc_normal  = $set['fc_normal'];
 $ff_name    = $set['ff_name'];
 $fs_name    = $set['fs_name'];
 $fc_name    = $set['fc_name'];
 $ff_extra   = $set['ff_extra'];
 $fs_extra   = $set['fs_extra'];
 $fc_extra   = $set['fc_extra'];
 $ff_entry   = $set['ff_entry'];
 $fs_entry   = $set['fs_entry'];
 $fc_entry   = $set['fc_entry'];
 $ff_menu    = $set['ff_menu'];
 $fs_menu    = $set['fs_menu'];
 $fc_menu    = $set['fc_menu'];
 $bg_color_1 = $set['bg_color_1'];
 $bg_color_2 = $set['bg_color_2'];
 $color_no   = $set['color_no'];
 $deco_no    = $set['deco_no'];
 $color_mo   = $set['color_mo'];
 $deco_mo    = $set['deco_mo'];
 $cursor_mo  = $set['cursor_mo'];
}
echo "<html>
<head>
 <title>".$titel."</title>
<style>
a {
 color: ".$color_no.";
 text-decoration: ".$deco_no.";
}
a:hover {
 color: ".$color_mo.";
 text-decoration: ".$deco_mo.";
 cursor: ".$cursor_mo.";
}
table {
 border-color: #000000;
}
</style>
</head>
<body>
<br>
<center>";
$result = mysql_query("SELECT * FROM ".$prefix."entry WHERE (IP='".$REMOTE_ADDR."' AND text='".$_POST['text']."' AND name='".$_POST['name']."')");
$ident = mysql_num_rows($result);
if(!$_POST['name'] OR !$_POST['email'] OR !$_POST['text']) {
 echo "<center>
 <br>
 <br>
 <font style="font-size:".$fs_normal."px;color:".$fc_normal.";font-family:".$ff_normal."">
  Bitte alle Pflichtfelder ausf&uuml;llen!<br>
  [<a href="javascript:history.back()">zur&uuml;ck</a>]
 </font>
</center>";
}
elseif($ident=="1") {
 echo "<center>
 <br>
 <br>
 <font style="font-size:".$fs_normal."px;color:".$fc_normal.";font-family:".$ff_normal."">
  Bitte kein Doppelposting!<br>
  [<a href="javascript:history.back()">zur&uuml;ck</a>]
 </font>
</center>";
}
else {
 $muster = "^([a-zA-Z0-9.\_-]+)@([a-zA-Z0-9.-]+.[A-Za-z][A-Za-z]+)$";
 // E-Mail kontrollieren
 if(ereg($muster, $_POST['email'])) {
  mysql_query("INSERT INTO ".$prefix."entry (name,email,homepage,text,datum,IP) VALUES ('".$_POST['name']."','".$_POST['email']."','".$_POST['homepage']."','".$_POST['text']."','".$datum."','".$REMOTE_ADDR."')");
  echo "<center>
 <br>
 <br>
 <font style="font-size:".$fs_normal."px;font-color:".$fc_normal.";font-family:".$ff_normal."">
  Eintrag erfolgreich!<br>
  Sie werden nun zum G&auml;stebuch weitergeleitet. Falls dies nicht der Fall ist nutzen Sie bitte diesen <a href="index.php">Link</a>.
 </font>
</center>";
  echo "<script>setTimeout("location.href='index.php'",2000)</script>";
 }
 else {
  echo "<center>
 <br>
 <br>
 <font style="font-size:".$fs_normal."px;color:".$fc_normal.";font-family:".$ff_normal."">
  Bitte g&uuml;ltige E-Mail Adresse angeben!
 </font>
</center>";
 }
}
?>

Ich weiß, dass ich mehrer Tags löschen muss. Bei einigen weiß ich es auch. Jedoch habe ich es bis jetzt noch nicht gemacht, da ich das falsche löschen könnte und somit evtl. Fehler einbaue könnte, die euch irritieren.

Um es besser zu lernen, würde ich dann gerne den richtigen, fertigen Code zum Lernen verwenden.

Vielen Dank

killa jan

  1. Lieber killa_jan,

    Um es besser zu lernen, würde ich dann gerne den richtigen, fertigen Code zum Lernen verwenden.

    mit dem fertigen Code lernst Du nix mehr, da Du Dich dann nicht mehr damit auseinandersetzen musst.

    Du möchtest Dich in die Grundlagen einlesen, um den Code zu _verstehen_ und anschließend nach Deinen Vorstellungen abändern zu können. Dazu lohnt es sich nach "PHP Tutorial" zu suchen.

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. hallo,

      stimmt das so ?

      <?php

      // Kontrolle ob settings.inc.php vorhanden
      if(file_exists("settings.inc.php")) {
       // settings.inc.php includieren
       include("settings.inc.php");
      }
      else {
       // wenn settings.inc.php nicht vorhanden ist
       echo "<br><br><center><font face="Verdana" size="2"><font color="#FF0000">Datei</font><i> 'settings.inc.php' </i><font color="#FF0000">wurde nicht gefunden!</font></font></center>";
      }

      // Verbindung zur Datenbank herstellen
       $link = mysql_connect($db_host, $db_user, $db_pass)
                     or die("<br><br><center><font face="Verdana" size="2"><font color="#FF0000">Keine Verbindung zur Datenbank m&ouml;glich!</font></font></center>");
              mysql_select_db($db_name)
                       or die("<br><br><center><font face="Verdana" size="2"><font color="#FF0000">Auswahl der Datenbank</font><i> '".$db_name."' </i><font color="#FF0000">fehlgeschlagen!</font></font></center>");

      $settings = mysql_query("SELECT * FROM ".$prefix."settings");
      while($set=mysql_fetch_array($settings)) {
       $titel      = $set['titel'];
       $steps      = $set['steps'];
       $ueber      = $set['ueber'];
       $titel_bild = $set['titel_bild'];
       $titel_text = $set['titel_text'];
       $ff_ueber   = $set['ff_ueber'];
       $fs_ueber   = $set['fs_ueber'];
       $fc_ueber   = $set['fc_ueber'];
       $ff_normal  = $set['ff_normal'];
       $fs_normal  = $set['fs_normal'];
       $fc_normal  = $set['fc_normal'];
       $ff_name    = $set['ff_name'];
       $fs_name    = $set['fs_name'];
       $fc_name    = $set['fc_name'];
       $ff_extra   = $set['ff_extra'];
       $fs_extra   = $set['fs_extra'];
       $fc_extra   = $set['fc_extra'];
       $ff_entry   = $set['ff_entry'];
       $fs_entry   = $set['fs_entry'];
       $fc_entry   = $set['fc_entry'];
       $ff_menu    = $set['ff_menu'];
       $fs_menu    = $set['fs_menu'];
       $fc_menu    = $set['fc_menu'];
       $bg_color_1 = $set['bg_color_1'];
       $bg_color_2 = $set['bg_color_2'];
       $color_no   = $set['color_no'];
       $deco_no    = $set['deco_no'];
       $color_mo   = $set['color_mo'];
       $deco_mo    = $set['deco_mo'];
       $cursor_mo  = $set['cursor_mo'];
      }
      echo "<html>
      <head>
       <title>".$titel."</title>
      <style>
      a {
       color: ".$color_no.";
       text-decoration: ".$deco_no.";
      }
      a:hover {
       color: ".$color_mo.";
       text-decoration: ".$deco_mo.";
       cursor: ".$cursor_mo.";
      }
      table {
       border-color: #000000;
      }
      </style>
      </head>
      <body>
      <br>
      <center>";
      $result = mysql_query("SELECT * FROM ".$prefix."entry WHERE (IP='".$REMOTE_ADDR."' AND text='".$_POST['text']."' AND name='".$_POST['name']."')");
      $ident = mysql_num_rows($result);
      if(!$_POST['name'] OR !$_POST['text']) {
       echo "<center>
       <br>
       <br>
       <font style="font-size:".$fs_normal."px;color:".$fc_normal.";font-family:".$ff_normal."">
        Bitte alle Pflichtfelder ausf&uuml;llen!<br>
        [<a href="javascript:history.back()">zur&uuml;ck</a>]
       </font>
      </center>";
      }
      elseif($ident=="1") {
       echo "<center>
       <br>
       <br>
       <font style="font-size:".$fs_normal."px;color:".$fc_normal.";font-family:".$ff_normal."">
        Bitte kein Doppelposting!<br>
        [<a href="javascript:history.back()">zur&uuml;ck</a>]
       </font>
      </center>";
      }
      else {
       $muster = "^([a-zA-Z0-9.\_-]+)@([a-zA-Z0-9.-]+.[A-Za-z][A-Za-z]+)$";
       // E-Mail kontrollieren
       //Emailkontrole auskommentiert
       //if(ereg($muster, $_POST['email'])) {
        mysql_query("INSERT INTO ".$prefix."entry (name,email,homepage,text,datum,IP) VALUES ('".$_POST['name']."','".$_POST['email']."','".$_POST['homepage']."','".$_POST['text']."','".$datum."','".$REMOTE_ADDR."')");
        echo "<center>
       <br>
       <br>
       <font style="font-size:".$fs_normal."px;font-color:".$fc_normal.";font-family:".$ff_normal."">
        Eintrag erfolgreich!<br>
        Sie werden nun zum G&auml;stebuch weitergeleitet. Falls dies nicht der Fall ist nutzen Sie bitte diesen <a href="index.php">Link</a>.
       </font>
      </center>";
        echo "<script>setTimeout("location.href='index.php'",2000)</script>";
       /*}
       else {
        echo "<center>
       <br>
       <br>
       <font style="font-size:".$fs_normal."px;color:".$fc_normal.";font-family:".$ff_normal."">
        Bitte g&uuml;ltige E-Mail Adresse angeben!
       </font>
      </center>";
       }*/
      }
      ?>

      1. Lieber killa,

        hallo,

        stimmt das so ?

        keine Ahnung. Hast Du's ausprobiert?

        Im Übrigen halte ich das gepostete GB-Script für absoluten Müll. Der HTML-Code, den es ausspuckt, verdient diese Bezeichnung nicht wirklich... Es gibt viel modernere und bessere Möglichkeiten. Hier im Forumsarchiv wirst Du bestimmt die ein oder andere Empfehlung für ein GB-Script finden - darunter auch meine eigene.

        Liebe Grüße,

        Felix Riesterer.

        --
        ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
  2. Hello Jan,

    grundsätzlich schließe ich mich Felix' Meinung an.

    • das Script ist Müll
    • Du solltest versuchen zu verstehen, was überhaupt passiert darin
    • dazu wirst Du vermutlich erst einige Grundlagen lernen müssen.

    eine von vielen Empfehlungen: http://tut.php-quake.net/de/

    [...] soll Einträge für ein Gästebuch speichern. Das funktionert auch und ich kann es anwenden. Jedoch funktioniert das nur, wenn man Name, email, eine Webside und den EIntrag selber abgibt. Das sind die Pflichtfelder, die man ausfüllen muss.

    Wie muss ich den Code nun umstellen, damit nurnoch der Name und der Eintrag Pflichtfelder sind?

    Um herauszufinden, an welcher Stelle überprüft wird, ob die entsprechenden Felder ausgefüllt sind, solltest Du Dir das HTML anschauen, was im Browser ankommt, dort nach dem Formular ausschau halten und im Formular die Namen der <input>-Elemente feststellen, um die es geht.

    Außerdem solltest Du die Formular-Request-Methode feststellen, um zu wissen, ob die Parameter über $_GET oder $_POST ins PHP-Script gelangen werden.

    Dann kannst Du anschließend im Script nach dem passenden globalen Array ($_GET oder $_POST) ausschau halten, und die Vergleiche suchen, die das Ausfüllen der Formularfelder erzwingen.

    <body>
    <br>
    <center>";
    $result = mysql_query("SELECT * FROM ".$prefix."entry WHERE (IP='".$REMOTE_ADDR."' AND text='".$_POST['text']."' AND name='".$_POST['name']."')");
    $ident = mysql_num_rows($result);

    if(!$_POST['name'] OR !$_POST['email'] OR !$_POST['text'])

    {

    echo "<center>
        <br>
        <br>
        <font style="font-size:".$fs_normal."px;color:".$fc_normal.";font-family:".$ff_normal."">
        Bitte alle Pflichtfelder ausf&uuml;llen!<br>
        [<a href="javascript:history.back()">zur&uuml;ck</a>]
        </font>
        </center>";

    // E-Mail kontrollieren
    if(ereg($muster, $_POST['email'])) {
      mysql_query("INSERT INTO ".$prefix."entry (name,email,homepage,text,datum,IP) VALUES ('".$_POST['name']."','".$_POST['email']."','".$_POST['homepage']."','".$_POST['text']."','".$datum."','".$REMOTE_ADDR."')");
      echo "<center>
    <br>
    <br>

    Liebe Grüße aus dem Cyberspace

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de