problem mit gästebuch. einschränkungen werden nicht beachtet

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • problem mit gästebuch. einschränkungen werden nicht beachtet

    soll ein gästebuch script werden. alles klappt. man kann eintragen, und man kann lesen.
    doch, es werden die einschränkungen nicht beachtet (habe es versucht ein wenig im code hervorzuheben)

    PHP-Code:
    <?php
    //zur datenbank connecten
    include ("../includes/db_connect.php");
    ?>
    <form name="Datenbank" method="post" action="gaestebuch_formular.php"> 
      <table width="800" border="0" cellspacing="0" cellpadding="0">
        <tr> 
          <td width="93">Name:</td>
          <td width="707"><input name="name" type="text" id="name"></td>
        </tr>
        <tr> 
          <td>eMail:</td>
          <td><input name="email" type="text" id="email"></td>
        </tr>
        <tr> 
          <td>Homepage:</td>
          <td><input name="homepage" type="text" id="homepage"> </td>
        </tr>
        <tr> 
          <td valign="top">Eintrag:</td>
          <td><textarea name="eintrag" cols="50" rows="18" wrap="PHYSICAL" id="textarea5"></textarea></td>
        </tr>
        <tr> 
          <td>&nbsp;</td>
          <td><input type="hidden" name="zeit" value="<?php echo date("<b>j.n.y</b> H:i"$unixtime); ?>">
            <input type="hidden" name="action" value="insert">
            <input name="submit" type="submit" id="abschicken5" value="Eintragen"></td>
        </tr>
      </table>
    </form>
    <?php
    if($submit){
      
    //Das Formular der Datei guestbook_new.php wurde ausgefüllt und abgeschickt

      //HTML- und PHP-Tags aus den Eingabefeldern entfernen
      
    $name=strip_tags($name);
      
    $email=strip_tags($email);
      
    $homepage=strip_tags($homepage);
      
    $eintrag=strip_tags($eintrag);

      
    //Konvertiere Zeilenumbrüche in HTML-<br>-Umbrüche
      
    $eintrag=nl2br($eintrag);



    ------------->
    start des ersten problems


    //Eingaben überprüfen
      
    if(strlen($name)<3){
      
    //Kein richtiger Name eingegeben
      
    $error_msg="Bitte geben Sie Ihren Namen an";
      }
      if(
    strlen($eintrag)<3){
      
    //Kein Eintrag vorgenommen
      
    $error_msg.="<br>Bitte geben Sie auch etwas in das Gästebuch ein.";
      }
        if(
    ereg("^([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$",$homepage)){
      
    //Es wurde auch eine Homepageadresse angegeben - entsprechende Formatierung vornehmen
      
    if(!ereg("^[url]http:////[/url]",$homepage)){
        
    //http:// fehlt in der Angabe der Adresse - hier ergänzen
        
    $homepage="http://" $homepage;
        }
      
    $hp_format="<br>Homepage: <a href=" $homepage " target=new>" $homepage "</a>";
      }
      
    //Ende Eingaben überprüfen

      
    if($error_msg){
      
         
    //Fehlerhafte Angaben - Hinweis ausgeben und keinen Eintrag vornehmen
         
    $message ="<br>Ihr Eintrag konnte leider nicht in unser Gästebuch aufgenommen werden:<br>";
         
    $message.=$error_msg;
         
    $message.="<br>Klicken Sie auf <a href=javascript:history.back(1)>zurück</a>.<br><br>";


    ------------->
    ende des ersten problems





      
    }else{

         
    //Neuen Gästebucheintrag vornehmen
         
    $now=date("Y-m-d H:i:s");
         
    $gastebuch_SQL_insert="INSERT INTO guestbook (name,homepage,eintrag,zeit) VALUES ('$name','$hp_format','$eintrag','$now')";
         
    mysql_query($guestbook_SQL_insert);
         
         
    //Mail verschicken
         
    $recipient="jfranke@wiwi.uni-frankfurt.de";
         
    $subject="Neuer Eintrag im Gaestebuch";
         
    $header="From: [email]webmaster@schreinerei-boerner.de[/email]\n";
         
    $mail_body="Neuer Eintrag im Gaestebuch";
         
         
    mail($recipient,$subject,$mail_body,$header);

      }
    }

    $abfrage "SELECT * FROM gaestebuch"//die bestimmten rows werden gesucht (in diesem fall die komplette tablelle)
    $auslesen mysql_query($abfrage); //die ausgewählten rows bzw. die tabelle wird ausgelesen
    $anzahl mysql_num_rows($auslesen); //es wird die anzahl der db einträge ausgerechnet
    echo "Im Gästebuch sind <b>$anzahl Einträge</b> zu finden<br><br>";



    ------------->
    start des zweiten problems



    if(!$pos$pos=0;
    $count=5;
    $guestbook_SQL="SELECT * FROM gaestebuch ORDER BY zeit DESC LIMIT $pos,$count";
    $guestbook_result=mysql_query($guestbook_SQL);

    //Anzahl der Datensätze ermitteln
    $no_data=mysql_num_rows(mysql_query("SELECT gaestebuch_id FROM gaestebuch"));

    //Mit diesen Anweisungen werden die Links für das Blättern zwischen den Ergebnissen erzeugt
    $new_pos_next=$pos+$count;
    if(
    $new_pos_next>=$no_data){
    $link_next="weiter >>";
    }else {
    $link_next="<a href=gaestebuch_formular.php?pos=" $new_pos_next ">weiter >></a>";
    }
    $new_pos_prev=$pos-$count;
    if(
    $new_pos_prev<0){
    $link_prev="<< zurück";
    } else {
    $link_prev="<a href=gaestebuch_formular.php?pos=" $new_pos_prev "><< zurück</a>";
    }


    ------------->
    endedes ersten problems




    while($row mysql_fetch_array($auslesen)){
    $ts=$gaestebuch['zeit'];
    $unixtime mktime(substr($ts,11,12),substr($ts,14,15),substr($ts,17,18),substr($ts,5,6),substr($ts,8,9),substr($ts,0,4));
    ?>
    <br>
    <table width="800" border="0" cellspacing="0" cellpadding="0">
      <tr> 
        <td width="234">Name:</td>
        <td width="314"><strong> 
          <?php
    echo $row['name']; ?>
          </strong></td>
      </tr>
      <tr> 
        <td>eMail :</td>
        <td><?php echo $row['email']; ?></td>
      </tr>
      <tr> 
        <td>Homepage:</td>
        <td><?php echo $row['homepage']; ?></td>
      </tr>
      <tr> 
        <td>Eintrag:</td>
        <td><?php echo $row['eintrag']; ?></td>
      </tr>
      <?php
      
    }
      
    ?>
    </table>
    Zuletzt geändert von jazzdee; 30.07.2003, 17:15.

  • #2
    beschreib mal näher, was passiert!

    benutze mal $_POST['name'] statt $name

    Kommentar


    • #3
      naja als ob das das einzigie wäre @tobiaz

      benütze mal $_POST['submit'] usw...ausser du willst, dass deine Scripte online nicht funktionieren (siehe register_globals = off)

      und bei deinem zweiten Problem solltest du erstmal alle Variablen die aus der URL kommen ein $_GET vorn dran setzen - wenn diese Probleme dann immer noch bestehen, dann kannst du dich nochmal melden
      (siehe register_globals = off)

      cya CrazyPip

      EDIT:
      In einem Buch fand ich eben diesen Befehl: array_item. Wenn das mit dem $_POST umschreiben dir zuviel arbeit ist, dann kannst du alle Variablen mit z.B.: $submit = array_item($_POST,'submit'); ändern, sodass du nun wirklich $submit als $submit benützen kannst


      @tobi: ja schon...wollts nur mal gesagt haben: vielleicht gibt hier ja welche, die dich dann zu wörtlich nehmen und dann nur eben die enstpechende Variable ändern (siehe DAU -> auch hier im Forum )
      Zuletzt geändert von CrazyPip; 30.07.2003, 18:01.

      Kommentar


      • #4
        @CP: war ja nur ein beispiel

        Kommentar


        • #5
          habt ihr vielleicht auch ein beispiel für leute, die noch nicht so lange php / mysql machen?
          ein klitzekleines beispiel......was ihr jetzt genau meint mit "....davor setzen"

          Kommentar


          • #6
            Lesen statt fragen: zum thema register_globals gibts hier im Forum threads zu genüge!

            also:
            für dein Beispiel heisst das jetzt statt z.B.:
            PHP-Code:
            $name=strip_tags($_POST['name']);
            $email=strip_tags($_POST['email']);
            $homepage=strip_tags($_POST['homepage']);
            $eintrag=strip_tags($_POST['eintrag']); 
            In diesem Fall darfst du dann die Variablen $name, $email, $homepage, $eintrag verwenden.

            Weiteres Beispiel (nur schönheitshalber):
            PHP-Code:
            $gastebuch_SQL_insert="INSERT INTO guestbook (name,homepage,eintrag,zeit) VALUES ('$name','$hp_format','$eintrag','$now')"
            wird zu
            PHP-Code:
            $gastebuch_SQL_insert="INSERT INTO guestbook (name,homepage,eintrag,zeit) VALUES ('$name','$hp_format','$eintrag',$now)"
            nur strings müssen in anführungszeichen in eine Tabelle eingetragen werden - zahlen nicht

            PHP-Code:
            $pos = (!$pos) ? $_GET['pos']; //NUR WENN pos als Parameter in der URL steht (index.php?pos=2)
            $count=5;
            $guestbook_SQL="SELECT * FROM gaestebuch ORDER BY zeit DESC LIMIT".$pos.",".$count
            und so solltest du jetzt deinen ganzen Code durchgehen, vielleicht wird dein Problem dann auch dadurch behoben

            cya CrazyPip

            Kommentar


            • #7
              hast anscheinend meine Beiträge nicht richtig gelesen!!!

              Kommentar


              • #8
                sorry, aber da sehe ich keinen unterschied...sollte ich das?

                Weiteres Beispiel (nur schönheitshalber):
                PHP-Code:
                $gastebuch_SQL_insert="INSERT INTO guestbook (name,homepage,eintrag,zeit) VALUES ('$name','$hp_format','$eintrag','$now')"
                wird zu
                PHP-Code:
                $gastebuch_SQL_insert="INSERT INTO guestbook (name,homepage,eintrag,zeit) VALUES ('$name','$hp_format','$eintrag',$now)"

                Kommentar


                • #9
                  das Beispiel ist irrelevant - wie gesagt nur Schönheitshalber. Das kannst du machen wie du willst, in der Regel aber(!) werden nur Zeichenketten(strings) in die DB per ' ' geschrieben. Zahlen eben nicht. Bisher gab es noch nie Probleme aber vielleicht wird sich das in späteren Versionen von MySQL oder PHP ändern...

                  $var = '5';

                  machst du ja auch nicht?! wieso dann dieses in SQL Befehlen anfangen?!

                  wichtiger sind die $_POST, $_GET usw Variablen richtig setzen

                  cya CrazyPip

                  EDIT:
                  der schönheitsfehler bezieht sich auf das $now

                  Kommentar


                  • #10
                    was machst du denn jetzt?

                    Kommentar

                    Lädt...
                    X