2011-03-20 5 views
0

에서 가져 오는 데이터는 I는 사용자 이름과 암호를 다시 가져다가 일치하는지 확인하는 코드의 조각을 입수했습니다. 나는 지금 사용자 이름과 패스와 같은 행에있는 테이블에있는 '포인트'값으로 세션을 설정할 수 있습니다. 수행 할 수있는 작업은 무엇입니까?mysql을 - 테이블 행

<?php $username="asdin"; 
$password="1sdA2"; 
$database="a75sdting"; 
$pword = $_REQUEST['pword']; 
$uname = $_REQUEST['uname']; 
mysql_connect('mysqsdst.com',$username,$password); 
@mysql_select_db($database) or die("Unable to select database"); 
$query = mysql_query("SELECT * FROM `username` WHERE `password` = '$pword' AND `username` = '$uname'"); 
$exsists = 0; 

     WHILE($rows = mysql_fetch_array($query)){ 
     $exsists = 1; 
     break; 
     } 
      if ($exsists){ 
      $_SESSION['usern']=$uname; 
      $_SESSION['logged']=1; 

      header('Location: http://wwsdipts/logged2.php'); 


        } 



mysql_close(); 

?> 

은 내가 [ '포인트'] $ _SESSION을 설정하려면 = $ 행 [포인트] 내가 생각 ...하지만 난 그 올바른 생각하지 말아

+0

입니까? – Prisoner

답변

1
<?php 

// start session (required on every page that uses sessions 
session_start(); 

// db auth 
$username="asdin"; 
$password="1sdA2"; 
$database="a75sdting"; 

// user auth 
$pword = $_POST['pword']; // should use either $_POST or $_GET, NOT $_REQUEST 
$uname = $_POST['uname']; // should use either $_POST or $_GET, NOT $_REQUEST 

// open db connection 
$conn = mysql_connect('mysqsdst.com',$username,$password); 
@mysql_select_db($database,$conn) or die("Unable to select database"); 

// check user 
$query = mysql_query("SELECT * FROM `username` WHERE `password` = '$pword' AND `username` = '$uname'"); 

if(mysql_num_rows($query)){ 
    // user exists 
    $row = mysql_fetch_assoc($query); 
    $_SESSION['usern']=$uname; 
    $_SESSION['logged']=1; 
    header('Location: http://wwsdipts/logged2.php'); 
}else{ 
    header('Location: http://wwsdipts/login.php'); // take them back to login page if incorrect details 
} 

// close db connection 
mysql_close($conn); 

?> 

, 노트를 살펴 보시기 바랍니다. 또한 다음과 같은 가치가 아무것도 아니다 :

    당신은 SQL 주입에 대한 보호의 어떤 종류를 사용한다
  1. 같은 mysql_real_escape_string($_POST['uname']) - 암호 같은
  2. 당신은 세션 변수를 사용하는 모든 페이지으로 session_start()를 필요
  3. $ _REQUEST를 사용하지 말고 $ _POST 또는 $ _GET을 사용하십시오 (그것에 대해 읽어보십시오)
  4. 실제로 username이라는 테이블이 있습니까? 당신은 DB 디자인, 더 나은 이름에 대해 조금을 읽어야/테이블과 사용자가 (난 당신이 무슨 뜻인지 모르는 & 암호를 입력합니다.
  5. 의 고유 ID, 이름의 조합을 사용자를 개최합니다 것이 테이블에 사용 점에 관해서도 "username"테이블의 열 이름에 액세스하려면 $row['column-name']을 사용하십시오 ($row = mysql_fetch_assoc($query);)
  6. 향후 PHP를 많이 사용하려면 PDO를 참조해야합니다. "포인트"어떤 SQL을 처리.
0

당신 말이 있지만,이 경우 귀하의 배열 rows이며,

$_SESSION['points'] = $rows['points'] 

에 있어야합니다 그리고 당신의 while 루프에 있어야합니다 :

WHILE($rows = mysql_fetch_array($query)){ 
    $exsists = 1; 
    $_SESSION['points'] = $rows['points'] 
    break; 
    } 

그러나,이 같은 뭔가를 더 좋을 수도 있습니다 : 나는 코드 비트를 정돈 한

if(mysql_num_rows($result) == 1) { 
    //Login Successful 
    rows = mysql_fetch_assoc($result); 
    $_SESSION['points'] = $rows['points'] 
    $_SESSION['usern']=$uname; 
    $_SESSION['logged']=1; 

    header('Location: http://wwsdipts/logged2.php'); 
}