[PHP] daten einer datenbank überprüfen

Dieses Thema im Forum "Webentwicklung" wurde erstellt von BenutzMich, 19. April 2010 .

  1. 19. April 2010
    daten einer datenbank überprüfen

    servus,
    ich bin gerade dabei eine regestrierung zu schreiben. es funktioniert alles soweit captcha und schreiben in die datenbank. nun habe ich folgendes proplem. es soll ein fehler kommen wenn die email schonmal vorhanden ist oder wenn der username vorhanden ist. nun weiß ich nicht genau wie ich das machen soll.

    Code:
    <?php
    
    
    session_start();
    if(isset($_SESSION['captcha_spam']) AND $_POST["sicherheitscode"] == $_SESSION['captcha_spam']){
    unset($_SESSION['captcha_spam']);
    
    }else{
     die ("Der Sicherheitscode ist falsch!");
    }
    
    class DB{
    
    var $DB_Name;
    var $DB_User;
    var $DB_Pass;
    var $DB_Server;
    var $Abfrage;
    
    function __construct(){
     require_once('config.php');
     $link = mysql_connect(DB_SERVER, DB_USER, DB_PASS);
    
     if (!$link) {
     die('keine Verbindung möglich: ' . mysql_error());
     }
    
    
    
     #Auswahl der Datenbank
     $db_selected = mysql_select_db(DB_NAME, $link);
     if (!$db_selected) {
     die ('Kann foo nicht benutzen : ' . mysql_error());
     }
    
    
    } // Ende __construct
    
    function queryDB(){
     $result = mysql_query($this->Abfrage);
     if (!$result) {
     die('Ungültige Abfrage: ' . mysql_error());
     }
     $data[0][0]=$num_rows = mysql_num_rows($result);
     $x=1;
     while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
     $data[$x]=$row;
     $x++;
    
     }
    
     Return($data);
    
     mysql_free_result($result);
    
    }// Ende queryDB
    
    function editDB(){
     $result = mysql_query($this->Abfrage);
     if (!$result) {
     die('Ungültige Abfrage: ' . mysql_error());
     }
    
    
    
    }
    
    
    } //Ende Class
    
    
    
    ?>

    Code:
    <?php
    
    include('classes/class_DB.php');
    
    
    
    
    
    
    $loginname = $_POST[username];
    $pass = $_POST[passwort];
    $pass_conf = $_POST[pass_conf];
    $vorname= $_POST[vorname];
    $nachname=$_POST[nachname];
    $email = $_POST[email];
    $gebdatum=$_POST[gebdatum];
    $strasse = $_POST[strasse];
    $plz=$_POST[plz];
    $wohnort = $_POST[wohnort];
    $ip = $_POST[ip];
    
    
    if($loginname == false || $pass == false || $pass_conf == false || $email == false || $vorname == false || $nachname == false || $gebdatum == false || $strasse == false || $plz == false || $wohnort == false ){
    
    echo"Bitte alle Felder ausf&uuml;llen";}
    if ($pass != $pass_conf){
     echo"Passwort wiederholen";
    }
    else {
    Values($name,$pass,$email,$strasse,$wohnort,$ip) ";
    
    $status=1;
    $Abfrage="Insert into user (loginname,password,email,vorname,nachname,geburtsdatum,strasse,plz,wohnort,status) Values('".$loginname."','".md5($pass)."','".$email."','".$vorname."','".$nachname."','".$gebdatum."','".$strasse."','".$plz."','".$wohnort."','".$status."')";
    
    $obj = new DB;
    $obj->Abfrage=$Abfrage;
    $obj->editDB();
    
    
    
    header("location:index.php");
    echo"Danke f&uuml;r deine Registration" ;
    
    
    
    }
    ?>
    so sieht bis jetzt mein script aus
     
  2. 19. April 2010
    AW: daten einer datenbank überprüfen

    1. Du solltest die eigegebenen Daten prüfen. Such mal mysql_real_escape_string.

    2. Du machst ne Abfrage mit Where-Klausel und überprüfst so, ob es nen Usernamen oder die Mailaddy schon gibt.
    Über die Boardsuche gefunden:
    if ( mysql_num_rows( mysql_query( "SELECT daten FROM tabelle WHERE daten='$daten'" ) ) != 0 ) {
    echo "Datensätze gefunden";
    }
     
  3. 19. April 2010
    AW: daten einer datenbank überprüfen

    Mach ein Check mit mysql_num_rows.

    PHP:
    SELECT loginname FROM user WHERE vorname = '".$vorname."'  ||  email = '".$email."'
    Und dann bekommst du ne Zahl ausgegeben entweder 1 oder 0.

    0= Kein Eintrag gefunden
    1= Ein eintrag gefunden. Email adresse oder Name ist bereits verwendet.



    Edit:// zu langsam^^
     
  4. 19. April 2010
    AW: daten einer datenbank überprüfen

    Was du suchst ist vermutlich mysql_num_rows.

    Was ist das für eine DB-Klasse, die Du da benutzt? Sofern du unter PHP5 arbeitest, kann ich dir mysqli empfehlen. Damit sähe es dann ungefähr so aus
    PHP:
    $db  = new  $mysqli ( );
    $email  strtolower ( $db -> real_escape_string ( $_POST [ 'email' ]));
    $qry  $db -> query ( "SELECT loginname FROM user WHERE email='" . $email . "'" );
    if (
    $qry -> num_rows  0 $email_vorhanden  true ;
    Alternativ könnte auch das klappen (ungetestet)
    PHP:
    $db  = new  $mysqli ( );
    $email  strtolower ( $db -> real_escape_string ( $_POST [ 'email' ]));
    if (
    $qry  $db -> query ( "SELECT loginname FROM user WHERE email='" . $email . "'" ))  $email_vorhanden  true ;
    Um Dein Script vor XSS zu schützen, habe ich mir erlaubt, mysql_real_escape_string zu benutzen. Außerdem wird mit strtolower sichergestellt, dass es keine Probleme mit der Groß- und Kleinschreibung gibt.

    EDIT:/ noch langsamer XD
     
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.