Ankündigung

Einklappen
Keine Ankündigung bisher.

Löschversuch aus Datenbank

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

  • #16
    Zitat von Dominik Beitrag anzeigen
    weil du eine if bruachst


    <?php
    $nickname
    = $_POST["nickname"];
    $gruss = $_POST["gruss"];
    if($nickname!="" && $gruss !="")
    {

    $eintrag = "INSERT INTO login_gruss (nickname, gruss) VALUES ('$nickname', '$gruss')";


    $eintragen = mysql_query($eintrag);
    }
    ?>


    aber achtung $nickname und $grus mit mysql real string sichern

    Und wie funktioniert das mit dem real string bei mir kommt nun HTTP 500 Interner server fehler...

    PHP-Code:
    <?php
      $nickname 
    $_POST["nickname"];
      
    $gruss $_POST["gruss"];
    if(
    $nickname!="" && $gruss !="")
    {
                
    mysql_real_escape_string($nickname),
                
    mysql_real_escape_string($gruss));

    $eintrag "INSERT INTO login_gruss (nickname, gruss) VALUES ('$nickname', '$gruss')";


    $eintragen mysql_query($eintrag);
    ?>

    Kommentar


    • #17
      Ich glaube, da liegt noch ein generelles Missverständnis über die Funktionsweise von PHP vor.
      Du scheinst zu glaube, dass PHP zwischen
      <form method="post" action="gruss.php">

      <span class="Stil1">Nickname:<br />
      <input name="nickname" type="text" size="22">
      <br />
      <br>
      Dein Gruss:<br />
      <textarea name="gruss" cols="22" rows="10"></textarea>
      </span><br>

      <input type="submit" name="Button" value="Abschicken">

      </form>
      und
      <?php
      $nickname = $_POST["nickname"];
      $gruss = $_POST["gruss"];
      in irgendeiner Weise auf eine Interaktion wartet. Das ist nicht so.
      Dein Skript wird bei jeder Anfrage komplett von oben nach unten abgearbeitet.
      Sämtliche Ausgabe (nicht der Quellcode, nur die Ausgaben) werden an den Browser gesendet. Sobald das passiert ist, ist PHP fertig und wird beendet.
      Das HTML Formular "lebt" nur im Browser. Sämtliche Eingaben finden im Browser statt - jenseits von PHP. Bis das Formular abgeschickt wird und der Browser drauf hin einen neuen HTTP Request an den Webserver sendet, ist PHP völlig unbeteiligt.
      Wie Dominik schon schrieb, musst Du zum Beispiel mit [man]if[/man] abtesten, ob im aktuellen Request (und damit im aktuellen Durchlauf Deines Skripts) die entsprechenden Parameter vorhanden sind.
      Auch in diesem Fall kannst Du den "Nutzcode" wieder an den Anfang des Skripts schreiben
      PHP-Code:
      <?php 
      session_start
      ();
      require_once 
      'login_config.php';
      require_once 
      'login_include.php';
      if ( isset(
      $_POST["nickname"], $_POST["gruss"]) ) {
        
      // <-- hier ggf. noch auf leere Zeichenketten abtesten -->
        
        
      $nickname mysql_real_escape_string($_POST["nickname"]);
        
      $gruss mysql_real_escape_string($_POST["gruss"]);
        
      $eintrag "INSERT INTO login_gruss (nickname, gruss) VALUES ('$nickname', '$gruss')";
        
      $eintragen mysql_query($eintrag) or die(mysql_error());
      }
      ?>
      <html>
        <head>
          <title>xyz</title>
          <style type="text/css">
          <!--
          .Stil1 {
              font-family: Verdana, Arial, Helvetica, sans-serif;
              font-size: 11px;
          }
          body,td,th {
              font-family: Verdana, Arial, Helvetica, sans-serif;
              font-size: 11px;
          }
          body {
              background-image: url(../img/index_r44_c11.jpg);
              background-repeat: repeat;
              margin-left: 5px;
              margin-right: 0px;
              margin-top: 5px;
              margin-bottom: 0px;
          }
          -->
          </style>
        </head>
        <body>
          <form method="post" action="gruss.php">
            <p class="Stil1">
              Nickname:
              <br /> 
              <input name="nickname" type="text" size="22" />
              <br />
              Dein Gruss:
              <br />
              <textarea name="gruss" cols="22" rows="10"></textarea>
            </p>
            <div>
              <input type="submit" name="Button" value="Abschicken" />
            </div>
          </form>
        </body>
      </html>

      Kommentar


      • #18
        Uiuiuiui da liegt noch viel lernen vor mir, muss ich feststellen... Puh Das script funktioniert nun do wie ich mir das vorstelle. Nun noch eine Frage zu verständniss:

        - Das heisst also das es erstens egal ist, ob der PHP code vor oder nach dem HTML code ist?
        - Der Befehl if ( isset($_POST["nickname"], $_POST["gruss"]) ) { testet ob in den Eingabefeldern des HTML code eingaben getägtigt wurde die weitergeleitet werden müssen???

        Hoffentlich hab ich nu verstanden

        Kommentar


        • #19
          if ( isset($_POST["nickname"], $_POST["gruss"]) ) {

          ich übersetze mal für dich

          fall die variable post nickname und die variable postgruss existiert bzw inhalt hat so mache das was zwischen den klammern steht

          Kommentar


          • #20
            Zitat von skietz Beitrag anzeigen
            - Das heisst also das es erstens egal ist, ob der PHP code vor oder nach dem HTML code ist?
            In diesem Fall ja.
            Wie gesagt: Dein Skript wird eh immer von oben bis unten ausgeführt.
            Du tippst den url im Browser ein, Skript läuft durch.
            Du schickst das Formular ab, Skript läuft durch.
            Wenn Du etwas im HTML Dokument ausgeben willst, kommt es natürlich auf die Position des Codes an


            Zitat von skietz Beitrag anzeigen
            - Der Befehl if ( isset($_POST["nickname"], $_POST["gruss"]) ) { testet ob in den Eingabefeldern des HTML code eingaben getägtigt wurde die weitergeleitet werden müssen???
            Jein. isset() testet ab, ob eine Variable (oder ein Feldelement) gesetzt ist.
            Aber wenn nichts im Formular eingegeben wurde, schickt der Browser trotzdem die Parameter ab, als leere Zeichenketten. Dann ist $_POST['nickname'] eine leere Zeichenkette, aber isset($_POST['nickname']) liefert trotzdem true.
            Zum Ausprobieren:
            PHP-Code:
            <?php
            $x 
            ''// leere Zeichenkette
            if ( isset($x) ) {
              echo 
            'x vorhanden';
            }
            Allerdings liefert isset() false, wenn eine Variable explizit auf NULL gesetzt wird.
            PHP-Code:
            <?php
            $x 
            null;
            if ( isset(
            $x) ) {
              echo 
            'x vorhanden';
            }
            Wenn Du also abtesten willst, ob wirklich etwas eingegeben wurde, solltest Du erst führende und abschließende Leerzeichen entfernen und dann zum Beispiel die Länge der Zeichenkette abtesten.
            Es gibt auch noch die Funktion [man]empty[/man]().
            Das funktioniert dann wie ein isset() gefolgt von einem Typecast (Umwandlung) nach bool.
            PHP-Code:
            if ( isset($x) && true===(bool)$x
            Wie der Typecast funktioniert, kannst Du unter PHP: Booleans - Manual nachlesen - wenn Du willst.

            PHP-Code:
            <?php
            $notice 
            null;
            if ( isset(
            $_POST["nickname"], $_POST["gruss"]) ) { 
              
            $nickname trim($_POST["nickname"]);
              
            $gruss trim($_POST["gruss"]); 
              if ( 
            strlen($nickname) ) {
                echo 
            'nickname fehlt. Mindestens zwei Zeichen eingeben.';
              }
              else if ( 
            strlen($gruss) ) {
                echo 
            'Grussbotschaft fehlt. Mindestens drei Zeichen eingeben.';
              }
              else {
                
            $nickname_sql mysql_real_escape_string($nickname);
                
            $gruss_sql mysql_real_escape_string($gruss);
                
            $eintrag "INSERT INTO login_gruss (nickname, gruss) VALUES ('$nickname_sql', '$gruss_sql')";
                
            mysql_query($eintrag) or die(mysql_error());
                
                
            $notice 'folgende Nachricht wurde eingetragen:
                  <fieldset><legend>' 
            htmlspecialchars($nickname) . '<legend>
                    ' 
            htmlspecialchars($gruss) . '
                  </fieldset>'
            ;
              }
            }
            ?>
            <html>
              <head>
                <title>xyz</title>
                <style type="text/css">
                  ...
                </style>
              </head>
              <body>
                <?php if (isset($notice) ) { echo $notice; } ?>
                <form method="post" action="gruss.php">

            Kommentar

            Lädt...
            X