Hallo,
ich werde wahnsinnig. Ich habe eine verschachtelte if-Abfrage die verschiedene Dinge prüft. Es geht um den Login. Es wird geprüft:
1. Existiert ein Account mit den Angaben des Login-Formulars?
2. Wenn ja, ist der Account freigeschaltet?
3. Wenn ja, login.
Es funktioniert soweit auch alles. Ist der account inaktiv, kommt dafür der entspr. Error. Genauso beim User der nicht exisitert. ABER:
Sind die login-daten korrekt und der account ist freigeschaltet, loggt er auch ein, allerdings wird kurz vorm einloggen, die fehlermeldung "account nicht freigeschaltet" angezeigt!!??
irgendwo hab ich die If's nicht ganz richtig geschachtelt:
php-skript, dass validierung prüft
jenachdem was "echo" übergibt, wird etwas getan: (mit JQUERY)
WARUM führt er das echo "inactive" noch aus, obwohl die Anweisung
"if(mysql_num_rows($result2)>0)" TRUE ist?
der login klappt ja, aber die meldung "account nicht freigeschaltet" wird trotzdem ausgegeben, noch bevor der login ausgeführt wird..
freue mich auf das licht am ende des tunnels
danke sehr
ich werde wahnsinnig. Ich habe eine verschachtelte if-Abfrage die verschiedene Dinge prüft. Es geht um den Login. Es wird geprüft:
1. Existiert ein Account mit den Angaben des Login-Formulars?
2. Wenn ja, ist der Account freigeschaltet?
3. Wenn ja, login.
Es funktioniert soweit auch alles. Ist der account inaktiv, kommt dafür der entspr. Error. Genauso beim User der nicht exisitert. ABER:
Sind die login-daten korrekt und der account ist freigeschaltet, loggt er auch ein, allerdings wird kurz vorm einloggen, die fehlermeldung "account nicht freigeschaltet" angezeigt!!??
irgendwo hab ich die If's nicht ganz richtig geschachtelt:
php-skript, dass validierung prüft
PHP-Code:
session_start();
include 'dbc.php';
//get the posted values
$user_name=htmlspecialchars($_POST['user_name'],ENT_QUOTES);
$pass=md5($_POST['password']);
//validating active status
$sql2="SELECT id FROM users WHERE email='".$user_name."' and active='1'";
$result2=mysql_query($sql2);
$row2=mysql_fetch_array($result2);
//now validating the username and password
$sql="SELECT email, password FROM users WHERE email='".$user_name."'";
$result=mysql_query($sql);
$row=mysql_fetch_array($result);
//if username exists
if((mysql_num_rows($result)>0) && (strcmp($row['password'],$pass)==0)){
if(mysql_num_rows($result2)>0){
echo "yes";
$_SESSION['user_id']=$user_name;
}
else
echo "inactive";
}
else
echo "no";
Code:
$(document).ready(function() { $("#login_form").submit(function() { //remove all the class add the messagebox classes and start fading $("#msgbox").removeClass().addClass('').text('').fadeIn(1000); //check the username exists or not from ajax $.post("ajax_login.php",{ user_name:$('#email').val(),password:$('#password').val(),rand:Math.random() } ,function(data) { if(data=='yes') //if correct login detail { $("#msgbox").fadeTo(200,0.1,function() //start fading the messagebox { //add message and change the class of the box and start fading $(this).html('Einloggen.....').addClass('messageboxok').fadeTo(900,1, function() { //redirect to secure page document.location='index.php?site=home'; }); }); } if(data=='no') { $("#msgbox").fadeTo(200,0.1,function() //start fading the messagebox { //add message and change the class of the box and start fading $(this).html('Falscher Benutzername/Passwort').addClass('messageboxerror').fadeTo(900,1); }); } else { $("#msgbox").fadeTo(200,0.1,function() //start fading the messagebox { //add message and change the class of the box and start fading $(this).html('Account nicht freigeschaltet').addClass('messageboxerror').fadeTo(900,1); }); } }); return false; //not to post the form physically }); //now call the ajax also focus move from $("#password").blur(function() { $("#login_form").trigger('submit'); }); });
WARUM führt er das echo "inactive" noch aus, obwohl die Anweisung
"if(mysql_num_rows($result2)>0)" TRUE ist?
der login klappt ja, aber die meldung "account nicht freigeschaltet" wird trotzdem ausgegeben, noch bevor der login ausgeführt wird..
freue mich auf das licht am ende des tunnels

danke sehr

Kommentar