2012-04-27 3 views
0

я написал функциональный скрипт Войти с использованием MySQL, однако я уже теперь сказали, что это должно быть сделано с помощью PDO, я функциональной связи PDOПреобразование MySQL Войти скрипт для PDO

function getConnection(){ 
$userName = '*****'; 
$password = '*****'; 
$dbname = '******'; 
$db = new PDO("mysql:host=localhost;dbname=$dbname", $userName, $password); 
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
return $db; 

однако я понятия не имею, как Conver запроса входа в PDO

if (isset($_REQUEST['attempt'])) 
{ 

$user = $_POST['user']; 
$password = $_POST['password']; 

$qry = mysql_query 
("SELECT * 
    FROM subscriber 
    WHERE email = '$user' 
    AND password = '$password'") 
or die(mysql_error()); 

$total = mysql_num_rows($qry); 

if ($total > 0) 
{ 
    session_start(); 
    $_SESSION['user'] = 'yes'; 
    header('location: account.php'); 
    exit; 
} 
else 
{ 
    // do nothing. 
} 
} 

любое понимание/помощь будет высоко ценится благодаря

+1

Читали ли вы какие-либо начинающий PDO учебник? Он сказал, как запросить базу данных? – Jon

+3

@ Jon: Несмотря на то, что я полностью согласен с вашими чувствами, я думаю, что тот факт, что этот пользователь на самом деле пытается сделать правильную вещь, отступив от mysql_query(), требует большей поддержки - вот что мы должны определенно поощрять, и больше объяснений есть вокруг, лучше для всех. – eggyal

+1

@eggyal: Кто-то более циничный может сказать, что этому пользователю было поручено что-то сделать и хочет делегировать работу SO. Как бы то ни было, «я понятия не имею» здесь неприемлемо AFAIK *, если * это не сопровождается «вот что я пробовал», даже если «попытка» означает «безуспешно googling для учебника». Наконец, я не согласен с идеей «больше объяснений вокруг», потому что у SO есть функция обмана - если бы не было такой, если бы мы хотели много разбросанных объяснений по тем же вопросам, вы не согласны? – Jon

ответ

6

У просматривания в PDO manual. Но, чтобы вы начали:

$db = getConnection(); 
$stmt = $db->prepare(" 
    SELECT * FROM subscriber WHERE email = :email AND password = :password 
"); 
$stmt->bindParam(":email" , $user ); 
$stmt->bindParam(":password", $password); 
$stmt->execute(); 
$total = $stmt->rowCount(); 
+0

спасибо за помощь, получил ее работу $ count = $ stmt-> rowCount(); \t \t, если ($ число> 0) \t { \t \t session_start(); \t \t $ _SESSION ['user'] = 'yes'; \t \t header ('location: account.php'); \t \t выход; \t} – user1302775

-1

Вы также можете использовать этот пример, если вы не хотите использовать bindParam. но я извлек его из ответа @ eggyal. Великий Благодаря eggyal

<?php session_start(); 
include_once('pdo.inc.php'); 

$username =(isset($_POST['username']))? trim($_POST['username']): ''; 
$password=(isset($_POST['password']))? $_POST['password'] : ''; 
$pas= md5($password); 
$redirect=(isset($_REQUEST['redirect']))? $_REQUEST['redirect'] : 
'view.php'; 
$query =("SELECT username FROM site_user WHERE username=:username 
AND password =:password"); 
$query_login = $con->prepare($query); 
$query_login->execute(array(
':username'=>$username, 
':password'=>$pas)); 
$result=$query_login->rowCount(); 
if($result>0) 
     { 
     $_SESSION['username']=$username; 
$_SESSION['logged'] = 1; 
      echo "success"; 
     } 
     else { 
//set these explicitly just to make sure 
echo 'User name invalid'; 
}?> 
1

не раздутый версия

$stm = $pdo->prepare("SELECT * FROM subscriber WHERE email = ? AND password = ?"); 
$stm-> execute($_POST['user'],$_POST['password']); 
if ($id = $stm->fetchColumn()) { 
    session_start(); 
    $_SESSION['user'] = $id; 
    header('location: account.php'); 
    exit; 
} 
+1

забудьте, что вы здесь, ваши ответы всегда нежны – humphrey