• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

controll und register problem

devilseye

Neues Mitglied
Ich steck grad ein bischen fest ich habe ein Formular zur Registrierung
welche beim Korrekten versenden an die controll.php weiter gereicht werden.
die Controll.php dient jediglich dazu zu überprüfen ob die E-mail und später
(wenn ich das problem hier gelöst habe) der username schon vergeben sind.
wenn beides oke ist soll auf die eingeloggt.html seite weitergeleitet werden und
die Daten in die DB geschrieben werden. Und da liegt auch mein Problem die
überprüfung funktioniert aber das einschreiben und die weiterleitung nicht.

hier die controll.php
PHP:
session_start();
error_reporting(E_ALL);

    $name       = $_SESSION['name'];
    $vorname    = $_SESSION['vorname'];
    $adresse    = $_SESSION['adresse'];
    $ort        = $_SESSION['ort'];
    $pw         = $_SESSION['pw'];
    $email        = $_SESSION['email'];
    
    $db = mysqli_connect("localhost", "root", "", "test") 
            OR die('Keine Verbindung zum Server');
    
    //$sql = "INSERT INTO members (name, vorname, email, adresse, ort, pw) VALUES ('$name', '$vorname', '$email', '$adresse', '$ort', '$pw')";
        
    $sql1 = "SELECT email FROM members";
    
        $ergebnis = mysqli_query($db, $sql1);
        while($zeile = mysqli_fetch_array($ergebnis)){
            if($zeile['email'] == $email){
                echo 'Diese Email wird bereits gebraucht!';
                break;
            }else{
                $sql = "INSERT INTO members (name, vorname, email, adresse, ort, pw) VALUES ('$name', '$vorname', '$email', '$adresse', '$ort', '$pw')";
                mysqli_query($db, $sql)
                    OR die('Fehler beim Verbinden mit der Datenbank');
                header('Location: eingeloggt.html');
            }
        }
        
    mysqli_close($db);

die einfache weiterleitung funzt ohne Probleme und die verbindung und eintragung ohne die abfrage funktioniert auch
ich bekomme keine Fehler meldung was mich leicht irritiert.

Danke schonmal im voraus.

MFG devilseye

EDIT: wenn ich ein break; nach der header weiterleitung schreibe Leitet er zwar weiter
jedoch wird dann die DB beschrieben ohne die überprüfung sprich ich kann die selbe email
mehr als 1mal nutzen.
 
Zuletzt bearbeitet:
Werbung:
Ich würde das ganze anderst lösen, denn so hast du einen großen Ressourcenverbrauch. Ich würde es so machen:

PHP:
$sql1 = "SELECT email FROM members WHERE email='".$_SESSION['email']."'";

if(mysql_num_rows(mysql_query($sql1)) > 0) {
echo'<p>Diese Email wird bereits verwendet.</p>';
}
else {
// dein Insert teil
}
 

Setz mal ein echo hinter header, dann kannst du sehn ob er die oberen Zeilen Überliest oder es garnicht erst zum ELSE kommt

Hilft mir persöhnlich immer.

PHP:
}else{
                $sql = "INSERT INTO members (name, vorname, email, adresse, ort, pw) VALUES ('$name', '$vorname', '$email', '$adresse', '$ort', '$pw')";
                mysqli_query($db, $sql)
                    OR die('Fehler beim Verbinden mit der Datenbank');
                header('Location: eingeloggt.html');
                echo "DIESER TEXT FAELLT DIR SOFORT AUF WENN ER AUSGEGEBEN WIRD UND DANN KANNST DU VIELLEICHT FESTSTELLEN WAS DER FEHLER IST";
            }




EDIT: Ich muss meinem Vorposter zustimmen.

 
Werbung:
ich habe das so wie oben geändert jedoch bekomme ich nun folgende Fehlermeldungen

Code:
[B]Warning[/B]:  mysql_query() [[URL="http://localhost/php/versuche/function.mysql-query"]function.mysql-query[/URL]]: Access denied for user 'ODBC'@'localhost' (using password: NO) in [B]C:\xampp\htdocs\php\versuche\control.php[/B] on line [B]19[/B]

[B]Warning[/B]:  mysql_query() [[URL="http://localhost/php/versuche/function.mysql-query"]function.mysql-query[/URL]]: A link to the server could not be established in [B]C:\xampp\htdocs\php\versuche\control.php[/B] on line [B]19[/B]

[B]Warning[/B]:  mysql_num_rows() expects parameter 1 to be resource, boolean given in [B]C:\xampp\htdocs\php\versuche\control.php[/B] on line [B]19[/B]

[B]Warning[/B]:  Cannot modify header information - headers already sent  by (output started at C:\xampp\htdocs\php\versuche\control.php:19) in [B]C:\xampp\htdocs\php\versuche\control.php[/B] on line [B]25
[/B]

hier nochmal der veränderte code eventuell habe ich ja etwas übersehen.

PHP:
session_start();
error_reporting(E_ALL);

    $name       = $_SESSION['name'];
    $vorname    = $_SESSION['vorname'];
    $adresse    = $_SESSION['adresse'];
    $ort        = $_SESSION['ort'];
    $pw         = $_SESSION['pw'];
    $email        = $_SESSION['email'];
    
    $db = mysqli_connect("localhost", "root", "", "test") 
            OR die('Keine Verbindung zum Server');
            
    $sql1 = "SELECT email FROM members WHERE email='" . $_SESSION['email'] . "'";
    
        if(mysql_num_rows(mysql_query($sql1)) > 0) {
            echo'<p>Diese Email wird bereits verwendet.</p>';
        }else {
            $sql = "INSERT INTO members (name, vorname, email, adresse, ort, pw) VALUES ('$name', '$vorname', '$email', '$adresse', '$ort', '$pw')";
            mysqli_query($db, $sql)
                OR die('Fehler beim Verbinden mit der Datenbank');
            header('Location: eingeloggt.html');
        }
        
    mysqli_close($db);
 
Zuletzt bearbeitet:
Werbung:
Zurück
Oben