Methode zur Überprüfung der Daten in php

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

  • Methode zur Überprüfung der Daten in php

    Ich habe folgenden Code zum Registrieren meiner User:

    PHP-Code:
    <html>
    <head>
    <title></title>
    </head>
    <body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">

    <?php
    session_start
    ();
    include 
    'sessionhelpers.inc.php';

    if (
    logged_in())
    {
    echo 
    '<h1>Sie sind eingeloggt<h1>';
    }
    else
    {
    echo 
    '<form method="post" action="logged_in.php">';
    echo 
    '<table cellspacing="1" cellpadding="2" border="0">';
    echo 
    '    <tr>';
    echo 
    '    <td><font size="2">Benutzername:</font></td>';
    echo 
    '    <td><font size="2"><input type="text" name="nickname" value="">&nbsp;</font></td>';
    echo 
    '  </tr>';
    echo 
    '  <tr>';
    echo 
    '    <td><font size="2">Passwort:</font></td>';
    echo 
    '    <td><font size="2"><input type="password" name="passwort" value=""></font></td>';
    echo 
    '  </tr>';
    echo 
    '  <tr>';
    echo 
    '    <td><font size="2">Wiederholen:</font></td>';
    echo 
    '    <td><font size="2"><input type="password" name="passwort2" value=""></font></td>';
    echo 
    '  </tr>';
    echo 
    '  <tr>';
    echo 
    '    <td><font size="2">E-Mail:</font></td>';
    echo 
    '    <td><font size="2"><input type="text" name="email" value="">&nbsp;</font></td>';
    echo 
    '  </tr>';
    echo 
    '  <tr>';
    echo 
    '    <td colspan=2 align=center><input type=submit value=Anmelden></td>';
    echo 
    '  </tr>';
    echo 
    '</table>';
    echo 
    '</form>';
    echo 
    '</body>';
    echo 
    '</html>';

    if (
    $_POST[nickname] == "" OR $_POST[passwort] == "" OR $_POST[email] == "") {
        echo 
    'Hat nicht geklappt';  
    } elseif (
    $_POST[passwort] != $_POST[passwort2]) {
        echo 
    'Passwort nicht identisch';
    }else
    {
    mysql_query("insert into tbl_user (nickname, Passwort, email) values('".$_POST[nickname]."', '".$_POST[passwort]."','".$_POST[email]."' )");
    echo 
    'SQL Statement ausgeführt';
    }
    }
    ?>
    Die If Schleife ganz unten führt sich nur immer schon aus, wenn man auf den LINK klickt. Nun möchte ich aber, dass die Prüfung erst nach
    dem Abschicken kommt. Ich weiß aber nicht, wie ich das am
    besten realisieren soll. Ich bin leider nicht so fit in php,
    daher würde ich mich über eine hilfe freuen. Danke im voraus!

  • #2
    PHP-Code:
    if(($_POST['nickname'] == "" OR $_POST['passwort'] == "" OR $_POST['email'] == "") && isset($_POST['nameDesSubmitButtons'])){ 
    Dann musst du dem Submit noch ein Name Attribut geben.

    Gruss

    tobi
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Gib dem Submit-Button einen name (z.B. name="send_it").


      Der Rest:

      PHP-Code:
      <?php
      if(isset($_POST['send_it']))
      {
          if (
      $_POST[nickname] == "" OR $_POST[passwort] == "" OR $_POST[email] == "")
          {
              echo 
      'Hat nicht geklappt';  
          }
          elseif (
      $_POST[passwort] != $_POST[passwort2])
          {
              echo 
      'Passwort nicht identisch';
          }
          else
          {
              
      mysql_query("insert into tbl_user (nickname, Passwort, email) values('".$_POST[nickname]."', '".$_POST[passwort]."','".$_POST[email]."' )");
              echo 
      'SQL Statement ausgeführt';
          }
      }
      ?>
      The right way is wrong oder auch right != right

      Kommentar


      • #4
        Ohje, in deinem Code brennts aber.

        1.) Zu deinem Problem: isset verwenden und deinem submit button nen namen geben, z.B. send. dann auf isset($_POST['send']) testen und dann, und nur dann, ist das Formular abgeschickt worden.

        2.) Ganz dringend solltest du dich über SQL-Injections schlau machen. Insbesondere mysql_real_escape_string - deine SQL-Query ist eine offene Scheune!

        3.) Du solltest mal genauer nachschauen was du mi $_POST[username] machst. Dazu solltest du mal error_reporting auf E_ALL setzen

        [EDIT]@jahlives: Das isset sollte nach vorne gezogen werden, denn sonst gibts Probleme (Notices). Wenn das Formular nicht abgesendet wird, d.h. die benötigte isset() Bedingung nicht erfüllt wird, wird nämlich die Auswertung der IF-Bedingung abgebrochen und damit die $_POST['username'] Sachen nicht mehr erreicht... Und somit wird er auch nicht meckern, dass es die nicht gibt
        Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
        var_dump(), print_r(), debug_backtrace und echo.
        Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
        Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
        Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

        Kommentar


        • #5
          @topicstarter
          MrJonez' Lösung ist die Bessere, weil du bei meiner die Prüfung nach dem Button in jeden Zweig deines if/elseif Konstruktes einzubauen.

          Gruss

          tobi
          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

          Kommentar


          • #6
            Original geschrieben von MrJonez
            Gib dem Submit-Button einen name (z.B. name="send_it").


            Der Rest:

            PHP-Code:
            <?php
            if(isset($_POST['send_it']))
            {
                if (
            $_POST[nickname] == "" OR $_POST[passwort] == "" OR $_POST[email] == "")
                {
                    echo 
            'Hat nicht geklappt';  
                }
                elseif (
            $_POST[passwort] != $_POST[passwort2])
                {
                    echo 
            'Passwort nicht identisch';
                }
                else
                {
                    
            mysql_query("insert into tbl_user (nickname, Passwort, email) values('".$_POST[nickname]."', '".$_POST[passwort]."','".$_POST[email]."' )");
                    echo 
            'SQL Statement ausgeführt';
                }
            }
            ?>


            DANKE, läuft soweit alles...

            @Shurakai

            Was entsteht denn, wenn ich deine Punkte 2) und 3) anwende oder was passiert nicht?!
            Sorry wenn ic hso blöd frage, aber wie gesagt ich bin absoluter laie in php und bin auf Hilfe angewiesen.

            Kommentar


            • #7
              zu punkt 2:
              http://de.wikipedia.org/wiki/SQL-Injektion

              Kommentar


              • #8
                ... und zu 3:

                http://www.php.net/manual/de/languag....array.foo-bar
                Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
                var_dump(), print_r(), debug_backtrace und echo.
                Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
                Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
                Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

                Kommentar

                Lädt...
                X