2014-01-29 49 views
0

我對我的問題存在一些問題。這個想法是從登錄視圖獲取用戶輸入,並將其與數據庫中的記錄進行比較。請問我該怎麼做?從登錄頁面獲取用戶輸入,並將其與數據庫中的值進行比較

這是我LoginController.php代碼

function login(){ 
$this->loadModel('Login'); 
$user = $this->request->data ['Login'] ['Username']; 
$pass = $this->request->data ['Login'] ['Password']; 

    $this->Login->find('all', array(
    'conditions' => array('username' => $dbuser,'password' => $dbpass))                                                                                                                                    
); 

if ($user == $dbuser){ 

if($pass == $dbpass){ 
$this->Session->setFlash('Welcome, ' . $user); 
$this->redirect(array('action' => 'home')); 
$this ->set('title_for_layout', 'Homepage'); } 
} 
else 
    { 
    $this->Session->setFlash('Error Login In!'); 
    } 

    } 

這是我View.ctp代碼

<html> 
<body background="bgimage.jpg"> 
<center> 
<strong><h2>LOGIN FORM</h2><strong> 

<?php 
echo $this->form->create('Login', array('action' => 'login')); 
echo $this->form->input('Username'); ?> <br> 
<?php echo $this->form->input('Password'); ?> <br> 
<?php echo $this->form->end('Login'); 
?> 
<br><br> 
    <?php echo $this->html->link ('Forgot Password?', array('action' =>'forgot')); ?> 
</center> 

<p> <?php echo $this->html->link ('Create Account', array('action' =>'add')); ?> </p> 
</body> 
</html> 

請幫

+0

'$ dbuser'和'$ dbpass'來自哪裏?他們是正確的密碼在數據庫中應該被散列,所以你nedd比較散列版本的提交的密碼 – lp1051

回答

0

爲什麼不使用郵政變量?

$username = $_POST['Username']; 
$password = $_POST['Password']; 
0

由於安全原因,密碼必須通過POST方法發送到php。 此外,還有函數md5 - 使用它來加密您的密碼,並將其作爲加密值保存到服務器上的數據庫。 當用戶發送密碼時使用md5,並將其與數據庫值進行比較。

對於登錄,最好找到好的captca(確保你是人類,而不是嘗試登錄的機器人/軟件)。

祝你好運!

相關問題