2011-03-18 3 views
0

J'ai un formulaire simple à valider si un utilisateur existe dans la base de données, et permettre la connexion à une autre page (oui je supprime la validation du mot de passe pour simplifier le code, et je teste sans passer le script affiche toujours Votre login n'est pas valide).erreur dans login- php/ajax

Base de données: emprego, tableau: les utilisateurs, les champs: id, nom d'utilisateur, email, passez

<script type="text/javascript" language="javascript"> 
$(document).ready(function() { 
    $("#login_form").submit(function() { 
     $("#msgbox").removeClass().addClass('messagebox').text('Validating....').fadeIn(1000); 
     $.post("ajax_login.php", { 
      name: $('#name').val(), 
     }, function (data) { 
      if (data == 'yes') { 
       $("#msgbox").fadeTo(200, 0.1, function() { 
        $(this).html('Logging in.....').addClass('messageboxok').fadeTo(900, 1, function() { 
         document.location = 'secure.php'; 
        }); 
       }); 
      } else { 
       $("#msgbox").fadeTo(200, 0.1, function() { 
        $(this).html('Your login is not valid').addClass('messageboxerror').fadeTo(900, 1); 
       }); 
      } 
     }); 
     return false; 
    }); 
}); 
</script> 
    </head> 
    <body> 
     <form method="post" action="" id="login_form"> 
        User Name : <input name="name" type="text" id="name"> 
       <div class="buttondiv"> 
        <input name="Submit" type="submit" id="submit" value="Login" style="margin-left:-10px; height:23px"> 
        <span id="msgbox" style="display:none"></span> 
       </div> 
     </form> 
fichier

: ajax_login.php

<?php 

include("includes/f_banco.php"); 
conecta(); 


$check = mysql_query("SELECT username FROM users WHERE username ='".mysql_real_escape_string($_POST['name'])."'")or die(mysql_error()); 
$row=mysql_fetch_array($check); 

if ($row['username'] == $_POST['name']) { 
    echo "yes"; 
    $_SESSION['name']=$row['username']; 
}else{echo "no";} 

?> 

EDIT: code mis à jour

ce qui est la cause possible?

+0

Pourquoi utilisez-vous pas'on' ou 'false'? 'yes' et' no' signifie simplement que vous devez écrire plus de code. – alex

+0

ok, mais le problème n'est pas cela, correct? merci –

+0

Quel est le problème et quelle est la question? – CallMeLaNN

Répondre

1

Je vois beaucoup de problèmes

<?php 
//removed the # from the post 
$name = mysql_real_escape_string($_POST['name']); 
//whys this here? 
$row=mysql_fetch_array($check); 
//name cant be used (common mistake) 
$check = mysql_query("SELECT name FROM users WHERE name ='".$name."'")or die(mysql_error()); 
$check2 = mysql_num_rows($check); 
if ($check2 == 1) { 
    echo "yes"; 
    $_SESSION['name']=$name; 
} 

else 
echo "no"; 
?> 

essayer quelque chose comme ça

<?php 
session_start(); 
include("includes/f_banco.php"); 
conecta(); 

if(isset($_SESSION['name'])){echo "yes";}else{ 
    $check = mysql_query("SELECT username FROM users WHERE username ='".mysql_real_escape_string($_POST['name'])."' LIMIT 1")or die(mysql_error()); 
    $row=mysql_fetch_array($check); 

    if ($row['username'] == $_POST['name']) { 
     echo "yes"; 
     $_SESSION['name']=$row['username']; 
    }else{echo "no";} 
} 


?> 
+0

je viens de copier votre code, changer le nom du champ dans le bd en nom d'utilisateur mais je peux faire le "login". Cela peut-être un problème dans le JS? –

+0

testez votre php avec un formulaire normal, commencez-vous la session avec session_start() dans ajax_login.php et la page de formulaire? –

+0

pour le moment mon code est égal à l'article mis à jour, merci Lawrence –