2014-05-14 2 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);}} 

, 난 오류 얻을 반환 문자열 '사용자 SELECT * FROM을 WHERE 끝나면 uname ='갈색 'AND 통과 ='켄지 ''(길이 = 61)mysql_num_rows도는() 나는 로그인 할 때마다 제로

내 $ 쿼리에 문제가 있다는 것을 의미합니다. $ query에서 $ pass 쿼리를 제거하면 제대로 작동하지만 포함될 때는 그렇지 않습니다. 아무도 제발 도와 줄 수 없어.

+0

허을 사용하려고? 왜 당신의 질문에 문제가 있다는 뜻입니까? 그것은 당신의'var_dump' 코드입니다. – BenM

+1

오류가 아닙니다. 그것은 당신의'var_dump ($ query);'코드입니다. –

+3

1. 암호를 일반 텍스트로 저장하지 마십시오. 2. mysql_ * 함수를 사용하지 마라. 그들은 비추천입니다. 3. 귀하의 코드는 SQL 삽입에 열려 있습니다 ... – BenM

답변

1

변화 그것을

mysql_selectdb($db, $connect); 

mysql_select_db($db, $connect); 
+0

코드 연결에 따라 쿼리를 만들지 않으므로 아무런 쿼리도 실행되지 않았다. – wild

+0

왜? DB 연결이 작동하지 않으면'no '를 얻습니다 :'if (! $ db_connect) {echo'no ';}' – BenM

+0

@BenM : 당신은 아무 말도하지 않을 것이라고 생각합니다. 내 지식에 의하면 – wild

0

같이 구

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

대신 위의 코드에서 에러 코드

$result = mysql_select_db($query, $connect); 
교체가
1

쿼리에 문제가 없지만 오류보고에 문제가 있습니다. 예를 들어, 다음 줄은 : SQL 쿼리가 적어도 1 행을 반환 할 때

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

$result 변수를 덤프합니다. 아마 당신은 사용하는 의미 :

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

또한,주의의 몇 가지 메모 :

  1. 는 일반 텍스트로 암호를 저장하지 마십시오. http://alias.io/2010/01/store-passwords-safely-with-php-and-mysql/
  2. mysql_* 기능을 사용하지 마십시오. 그들은 비추천입니다. PDO 또는 MySQLi을 확인하십시오.
  3. 코드는 SQL injection까지 열려 있습니다. 당신의 구문에서 일부 오류가 발생하면
0

, 는

mysql_num_rows($result) or die('Could not Show result: ' . mysql_error()); 
관련 문제