PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   registrierungsformular - email abfragen und vergleichen (http://www.selfphp.de/forum/showthread.php?t=25709)

DasNasu 03.12.2015 09:22:53

registrierungsformular - email abfragen und vergleichen
 
Hi,

ich hab folgendes anliegen: ich möchte in einem registrierungsformular eine email auslesen, diese mit einer mysql-tabelle in einer mysql-datenbank vergleichen und ggf ausgeben lassen, das diese email schon vergeben ist. leider funktioniert meine umsetzung dieser idee nicht ganz wie gewünscht :c hoffe hier hat jemand ne idee wie ich folgenden code überredet bekomme wie gewünscht zu funktionieren.

PHP-Code:

<?php
    
if(isset($_POST['pname']) and isset($_POST['pemail']) and isset($_POST['pfirstname']) and isset($_POST['plastname']) and isset($_POST['pday']) and isset($_POST['pmonth']) and isset($_POST['pyear']) and isset($_POST['ppass']) and isset($_POST['pcpass'])){
        
$pbirthday strtotime($_POST['pday'].'-'.$_POST['pmonth'].'-'.$_POST['pyear']);
        
$ppass hash("sha512",$_POST['ppass']);
        
$pfirst $_POST['pfirstname'];
        
$plast $_POST['plastname'];
        
$timestamp mktime(000$_GET['month'], $_GET['pday'], $_GET['pyear']);
        if(
$ppass == hash("sha512",$_POST['pcpass'])) {
            
$pemail $_POST['pemail'];
            
$query mysql_query("SELECT * FROM Player WHERE pEmail = '$pemail'");
            if(!
$query) {
                 
$pname $_POST['pname'];
                 
$query mysql_query("SELECT * FROM Player WHERE pName = '$pname'");
                 if(!
$query) {
                     if(
mysql_query("INSERT INTO Player (pName,pEmail,pFirstname,pLastname,pBirthday,pPassword) VALUES ('$pname','$pemail','$pfirst','$plast','$timestamp','$ppass')")) {
                         echo 
'successful registered<br />';
                         echo 
$timestamp;
                         }
                         else { echo 
'could not insert'; }
                     }
                     else { echo 
'username schon vergeben'; }
                 }
                 else { echo 
'email schon vergeben'; }
             }
             else { echo 
'passwörter nicht identisch'; }
         }
    else {
    
// registrierungsformular
    
}
?>

anmerkung: die connect zur datenbank funktioniert, das registrierungsformular (hier der einfachheit halber einfach durch nen comment ersetzt) übermittelt alle korrekten werte, der code wird per include('filepath') eingebunden und wenn ich die "!" vor den "if(!$query)" entferne wird auch in die tabelle geschrieben. frage is jetz wie ich des umsetze, damit meine $query mir nen false oder nen true zurück gibt und nicht nur ne leere abfrage (weil genau das müsste es ja ergeben wenn bei email und user nichts gefunden wird, aber ne rückmeldung erfolgt die nicht true/false ist oder?). bin mal auf eure ideen gespannt c:

für den fall das jtz jemand kommt und meckert weil der code bissl sehr lang und uneingerückt is: die einrückung hat er beim kopieren aus notepad++ nicht übernommen :c und ich weiß nich wie man hier codespoiler erstellen kann :/

sysop 03.12.2015 11:03:19

AW: registrierungsformular - email abfragen und vergleichen
 
Bitte Codetags verwenden, das kann man ja sonst nicht lesen.

vt1816 03.12.2015 12:54:55

AW: registrierungsformular - email abfragen und vergleichen
 
PHP-Code:

error_reporting(-1);   
ini_set('display_errors'TRUE); 

Schalte die Fehleranzeige ein bzw. höher!
Benutze keine geschützen Wörter als Variablennamen o.ä.

Benutze statt MySQL nur noch MySQLi. Lass Dir auch MySQLi-Fehler anzeigen.

Berichtige Deine Fehler ($_GET im Formular, $_GET['month'] gibt es nicht - auch nicht als $_POST, usw.). Übernimm nicht ungeprüft Formulareingaben!

Lass Dir Deine $query vor der Ausführung anzeigen, um zu prüfen ob die Varaiblen richtig übernommen wurden. Prüfe die Query ggf. via phpMyAdmin auf Funktionstüchtigkeit.

Wenn Du dann noch Probleme hats, bist Du mit Deinem aktuellen Code hier wieder richtig.

DasNasu 03.12.2015 16:32:35

AW: registrierungsformular - email abfragen und vergleichen
 
Zitat:

Zitat von DasNasu (Beitrag 148054)
für den fall das jtz jemand kommt und meckert weil der code bissl sehr lang und uneingerückt is: die einrückung hat er beim kopieren aus notepad++ nicht übernommen :c und ich weiß nich wie man hier codespoiler erstellen kann :/

Zitat:

Zitat von sysop (Beitrag 148055)
Bitte Codetags verwenden, das kann man ja sonst nicht lesen.

Jupp... danke...

Zitat:

Zitat von vt1816 (Beitrag 148058)
Schalte die Fehleranzeige ein bzw. höher!

hab ich nie deaktiviert
Zitat:

Zitat von vt1816 (Beitrag 148058)
Benutze keine geschützen Wörter als Variablennamen o.ä.

funktioniert aber ;) werde ich aber dennoch der übersichtlichkeit halber mal ändern.
Zitat:

Zitat von vt1816 (Beitrag 148058)
Benutze statt MySQL nur noch MySQLi. Lass Dir auch MySQLi-Fehler anzeigen.

funtzt bei mir nicht da mein hoster phpmyadmin noch nicht aktualisiert hat... und ja schon getestet
Zitat:

Zitat von vt1816 (Beitrag 148058)
Berichtige Deine Fehler ($_GET im Formular, $_GET['month'] gibt es nicht - auch nicht als $_POST, usw.). Übernimm nicht ungeprüft Formulareingaben!

du kennst mein <form> nicht, was lässt dich wissen das ich nichts getten kann? aber stimmt schon, ich gette nichts, war nen flüchtigkeitsfehler. sollte der funktionalität für die mysql abfrage nach der email aber nichts tun oder? :o

DasNasu 03.12.2015 20:40:39

AW: registrierungsformular - email abfragen und vergleichen
 
Jut hab mein problem jetz mit mysql_num_rows gelöst ;)

PHP-Code:

if(isset($_POST['pname']) and isset($_POST['pemail']) and isset($_POST['pfirstname']) and isset($_POST['plastname']) and isset($_POST['pday']) and isset($_POST['pmonth']) and isset($_POST['pyear']) and isset($_POST['ppass']) and isset($_POST['pcpass'])){
        
$pbirthday strtotime($_POST['pday'].'-'.$_POST['pmonth'].'-'.$_POST['pyear']);
        
$ppass hash("sha512",$_POST['ppass']);
        
$pfirst $_POST['pfirstname'];
        
$plast $_POST['plastname'];
        
$timestamp mktime(000$_POST['pmonth'], $_POST['pday'], $_POST['pyear']);
        if(
$ppass == hash("sha512",$_POST['pcpass'])) {
            
$pemail $_POST['pemail'];
            
$mdo mysql_query("SELECT * FROM Player WHERE pEmail = '$pemail'");
            if(
mysql_num_rows($mdo) <= 0) {
                
$pname $_POST['pname'];
                
$mdo mysql_query("SELECT * FROM Player WHERE pName = '$pname'");
                if(
mysql_num_rows($mdo) <= 0)    {
                    if(
mysql_query("INSERT INTO Player (pName,pEmail,pFirstname,pLastname,pBirthday,pPassword) VALUES ('$pname','$pemail','$pfirst','$plast','$timestamp','$ppass')")) {
                        echo 
'successful registered<br />';
                        echo 
$timestamp;
                    }
                    else { echo 
'could not insert'; }
                }
                else { echo 
'username schon vergeben'; }
            }
            else { echo 
'email schon vergeben'; }
        }
        else { echo 
'passwörter nicht identisch'; }
    }
    else { 


vt1816 04.12.2015 14:22:07

AW: registrierungsformular - email abfragen und vergleichen
 
  1. mysql_num_rows <= 0, nenne mir bitte ein Beispiel wann der Wert negativ werden kann.
  2. MySQL - Die Erweiterung ist seit PHP 5.5.0 als veraltet markiert und wird in der Zukunft entfernt werden. Verwende stattdessen die Erweiterungen MySQLi oder PDO_MySQL. Spätestens wenn der Hoster Deines Vertrauen ein Update macht, fliegen Dir die Sachen um die Ohren und hat auch nichts mit phpmyadmin zu tun.
  3. "hab ich nie deaktiviert" - zeugt von Unkenntnis


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:02:35 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.