Eingabe Prüfung bei einer Registrierung

  • Themenstarter Themenstarter DaWeed
  • Beginndatum Beginndatum
D

DaWeed

Guest
Ich arbeite momentan an nem Registrierungs-script und wollt' jetzt zum Schluss noch einmal das script durchgehen , um es auf evt. Fehler zu Prüfen.
Dabei ist mir aufgefallen , dass ich garkeine abfrage eingebaut habe , die überprüft ob der Name und die E-Mail addy bereits vorhanden sind.
natürlich würde ein Fehler von der MySQL Dantenbank angezeigt werden weil ich beide Tabellen-Felder als Unique gekennzeichnet habe , aber es würde doch ziemlich schlecht aussehen , wenn da ein MySQL Fehler ausgegeben wird.
Also wie kann ich dieses Problem mit PHP Lösen , sodass eine Mitteilung angezeigt wird , dass der jeweilige Benuztername bzw. die E-mail addy existiert??
Bis jetzt sieht das script so aus:
Code:
<?php
        error_reporting(E_ALL);
        include "config.php"; //config variabeln einbinden
mysql_connect("$db_host","$db_user","$db_pass") or DIE ("Keine Verbindung zur Datenbank möglich");
mysql_select_db("$db_name") or DIE ("Die Datenbank existiert nicht");


$user = $_POST["UserName"];
$email = $_POST["UserMail"];
srand(microtime()*100000000);
$passwort = rand(154263,10848756);



   // Absicherung, dass die Datei auch über das Formular aufgerufen wurde
   if ($_POST['User'] ) {
       // Eingabeprüfung
   }   
   else {
       echo "bitte überprüfe deine Angaben.";
       exit();
    }

if ($_POST["UserName"]== "")
{
echo "<center>Bitte gebe einen Benutzernamen ein.</center>";
exit();
}
if ($_POST["UserMail"]== "")
{
echo "<center>Bitte gebe eine E-Mail Adresse ein.</center>";
exit();
}

$eintrag = "INSERT INTO User (UserID, UserName, UserMail, UserPass) VALUES ('$user','$email','$passwort')";

$eintragen = mysql_query($eintrag) or DIE ("MySQL-Fehler: " . mysql_error());

mysql_close();

$betreff ='www.Master of Empires.de';
$nachricht ="Hallo,

deine Benutzerdaten sind folgende:';

$user
$passwort

'Vielen Dank für die Registrierung auf Master of Empires.dehttp://hackerboard.de/images/bbcode_php.gif
PHP CODE farbig hervorheben! Du kannst dich nun mit den oben genannten Daten einloggen. Das Passwort kannst du im Spiel ändern.";
$header = 'From: noreply@mittleresZeitalter.de' . "\r\n" .
   'Reply-To: noreply@mittleresZeitalter.de' . "\r\n" .
   'X-Mailer: PHP/' . phpversion();

mail($email, $betreff, $nachricht, $header);

header ("Location: Login.php")
?>
 
mach doch ne SQL Abfrage:

Code:
SELECT UserName, UserMail FROM User WHERE UserName=$user or UserMail=$passwort
und checkst du mit dem PHP Skript ob du einen Datensatz zurückbekommst
(
PHP:
if ($row==mysql_fetch_assoc($sqlresult)) 
{
 echo"User/Email existiert.";
} else { //und dann deine inserts und der Rest
).

Du könntest es auch unelegant machen und anstatt
PHP:
or DIE ("MySQL-Fehler: " . mysql_error());
PHP:
or DIE ("Ihre Emailadrrese oder Username ist schon vergeben");

Hierbei würde die Fehlermeldung bei allen möglichen Fehlern kommen wär ja nicht so wünschenswert


P.S. Lösch mal dein Passwort bitte aus deinemSkript
 
also so...

Code:
<?php
        error_reporting(E_ALL);
        include "config.php"; //config variabeln einbinden
mysql_connect("$db_host","$db_user","$db_pass") or DIE ("Keine Verbindung zur Datenbank möglich");
mysql_select_db("$db_name") or DIE ("Die Datenbank existiert nicht");


$user = $_POST["UserName"];
$email = $_POST["UserMail"];
srand(microtime()*100000000);
$passwort = rand(154263,10848756);



   // Absicherung, dass die Datei auch über das Formular aufgerufen wurde
   if ($_POST['User'] ) {
       // Eingabeprüfung
   }   
   else {
       echo "bitte überprüfe deine Angaben.";
       exit();
    }

if ($_POST["UserName"]== "")
{
echo "<center>Bitte gebe einen Benutzernamen ein.</center>";
exit();
}
if ($_POST["UserMail"]== "")
{
echo "<center>Bitte gebe eine E-Mail Adresse ein.</center>";

$sqlresult= "Select UserName, UserMail FROM User WHERE UserName=$user or UserMail=$email";
if ($row==mysql_fetch_assoc($sqlresult))
{
echo "Username und/oder E-Mail Adresse exestiert/exestieren bereits.</n><br />";
echo "Bitte ändere deine Angaben";
} 
}
else
{                        
$eintrag = "INSERT INTO User (UserID, UserName, UserMail, UserPass) VALUES ('$user','$email','$passwort')";

$eintragen = mysql_query($eintrag) or DIE ("MySQL-Fehler: " . mysql_error());
}
exit()
mysql_close();

$betreff ='www.Master of Empires.de';
$nachricht ="Hallo,

deine Benutzerdaten sind folgende:';

$user
$passwort

'Vielen Dank für die Registrierung auf Master of Empires.dehttp://hackerboard.de/images/bbcode_php.gif
PHP CODE farbig hervorheben! Du kannst dich nun mit den oben genannten Daten einloggen. Das Passwort kannst du im Spiel ändern.";
$header = 'From: rider_on_the_storm@hotmail.de' . "\r\n" .
   'Reply-To: rider_on_the_storm@hotmail.de' . "\r\n" .
   'X-Mailer: PHP/' . phpversion();

mail($email, $betreff, $nachricht, $header);

header ("Location: Login.php")
?>
oder hab ich wieder nen fatal error erzeugt (ich würd ja selbst testen nur leider hat mein kumpl den server auf dem alles drauf is und der is nich angeschlossen UND ich kann den freund nich erreichen -.-)
 
PHP:
$user
$passwort
da muss nen echo davor.
Fatal Error find ich net wirklich hab aber net so genau gesucht, nur überflogen.
Aber ich denke da hats nen "logischen" Fehler und zwar mit den if Abfragen.

ich würds so machen:

PHP:
if ($_POST["UserName"]== "")
{
 echo "<center>Bitte gebe einen Benutzernamen ein.</center>";
 exit();
} elseif ($_POST["UserMail"]== "")
      {
        echo "<center>Bitte gebe eine E-Mail Adresse ein.</center>"; 
        $sqlresult= "Select UserName, UserMail FROM User WHERE   
        UserName=$user or UserMail=$email";
      } elseif ($row==mysql_fetch_assoc($sqlresult))
          {
           echo "User/Mail existiert(so schreibt mans^^)";
          } else {
                    $eintrag = "INSERT INTO User (UserID, UserName, UserMail,      
                    UserPass) VALUES ('$user','$email','$passwort')";

                    $eintragen = mysql_query($eintrag) or DIE ("MySQL-Fehler: "   
                    . mysql_error());
                   }

Hoff hab jetzt kein Fehler gemacht^^

P.S: Zum HTML Part ich meine man benutzt nicht mehr so richtig <center> sondern macht es mit <div align="center">Text</div>
 
Zurück
Oben