2014-05-14 5 views
0
<form action = "index.php" method = "post"> 
username : <input type = "text" name = "uname" /><br> 
password : <input type = "text" name = "pass" /><br> 
submit : <input type = "submit" name = "submit" value = "submit" /> 
</form> 

<?php 
if(isset($_SESSION['id'])){echo $_SESSION['id'];} 
if(isset($_POST['submit'])){ 
if ($_POST['submit'] == 'submit'){ 

$uname = $_POST['uname']; 
$pass = $_POST['pass']; 
$db = "davidedwardcakes"; 
$connect = mysql_connect('localhost', 'root', 'wtfiwwu'); 
$db_connect = mysql_selectdb($db, $connect); 
if(!$db_connect){echo 'no';} 

$query = "SELECT * FROM `users` WHERE uname ='$uname' AND pass = '$pass'"; 
$result = mysql_query($query, $connect); 
if(mysql_num_rows($result) > 0){//echo 'index failed'; var_dump($result);} 
while($row = mysql_fetch_array($result)){echo $row['uname'] 
. "<br>"; 

session_start(); 
echo '<a href = "test.php">peruse</a>'; 
$_SESSION['id'] = $row['id'];}} 

else{echo 'lol'; var_dump($query);}} 

Chaque fois que je veux vous connecter, je reçois l'erreur: chaîne 'SELECT * FROM utilisateurs WHERE uname =' brune 'ET pass = 'kenji'' (longueur = 61)mysql_num_rows() retourne zéro

ce qui signifie qu'il y a un problème avec ma requête $. Si je supprime la requête $ pass de $ query cela fonctionne bien mais ne le fait pas quand il est inclus. Quelqu'un peut-il aider s'il vous plaît.

+0

Huh? Pourquoi cela signifie-t-il qu'il y a un problème avec votre requête? C'est votre code 'var_dump'. – BenM

+1

Ce n'est pas une erreur. C'est votre 'var_dump ($ query);' code. –

+3

1. Ne stockez pas les mots de passe en texte brut. 2. N'utilisez pas les fonctions 'mysql_ *'; ils sont obsolètes. 3. Votre code est largement ouvert à l'injection SQL ... – BenM

Répondre

1

changement, il

mysql_selectdb($db, $connect); 

comme

mysql_select_db($db, $connect); 
+0

selon votre connexion de code ne pas créer donc aucune requête n'a été exécutée – wild

+0

Pourquoi? Si sa connexion DB ne fonctionne pas, il obtiendra 'no':' if (! $ Db_connect) {echo 'no';} ' – BenM

+0

@BenM: Vous essayerez je pense que vous obtiendrez une instruction no:. selon mon knowlage – wild

0

Il y a une erreur dans la syntaxe

$result = mysql_select($query, $connect); 

au lieu du code ci-dessus remplacer par ce code

$result = mysql_select_db($query, $connect); 
1

Votre requête ne comporte aucun problème, mais votre rapport d'erreur ne fonctionne pas correctement. Par exemple, la ligne suivante:

if(mysql_num_rows($result) > 0){//echo 'index failed'; var_dump($result);} 

videra la variable $result lorsque la requête SQL retourne au moins 1 rang. Peut-être que vous vouliez utiliser:

if(mysql_num_rows($result) < 1) { echo 'index failed'; var_dump($result); } 

En outre, quelques notes de prudence:

  1. Ne pas stocker les mots de passe en texte brut. Ne pas utiliser les fonctions mysql_*http://alias.io/2010/01/store-passwords-safely-with-php-and-mysql/ ils sont obsolètes. Regardez PDO ou MySQLi.
  2. Votre code est grand ouvert à SQL injection.
0

S'il y a une erreur dans votre syntaxe, Essayez d'utiliser

mysql_num_rows($result) or die('Could not Show result: ' . mysql_error());