2013-05-07 126 views
0

我想在php中創建一個IRC日誌機器人!它已經很多了,但我想用用戶創建的密碼來保護日誌。Mysql登錄php

基本上這個想法是,用戶鍵入:!密碼和het獲取一個隨機密碼! 一次的webportal他需要與密碼登錄,然後他就可以看到日誌的

我有密碼生成器,並且已經登錄腳本會話的

登錄數據庫看起來是這樣的:

#| id | nick | Password 
------------------------ 
1| 1 | xvilo | HndOe34 
2| 2 | user | ET4vfd4 
3| 3 | boooh | WQ688WY 

登錄腳本如下:

<?php 
$pass = $_POST['pass']; 

if(isset($pass)) 
{ 

    if(empty($pass)) { 
     die ("ERROR: Please enter password!"); 
    } 


    if($pass == "somepassword") 
    { 
     // Authentication successful - Set session 
     session_start(); 
     $_SESSION['auth'] = 1; 
     $_SESSION['nick'] = $nick_from_database; 
     setcookie("username", $_POST['name'], time()+(84600*30)); 
     header('Location: '.$_SERVER['PHP_SELF'].''); 
    } 
    else { 
     echo "ERROR: Incorrect username or password!"; 
    } 
} 


// If no submission, display login form 
else { 
?> 
    <html> 
    <head></head> 
    <body> 
    <center> 
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
    <p /> 
    Password: <input type="password" name="pass"> 
    <p /> 
    <input type="submit" name="submit" value="Log In"> 
    </center> 
    </body> 
    </html> 
<?php 
} 
?> 

正如你可以看到它是非常基本的! 在此代碼之前,我已經連接到數據庫! 現在我不知道如何檢查給定的密碼(來自輸入字段)是否與數據庫中的某個密碼相同! 如果是這樣,那麼給他: $ _SESSION ['auth'] = 1; 所以他登錄並 $ _SESSION [「缺口」] 需要成爲他的暱稱(存儲在同一行)

我希望你們都明白我需要什麼,因爲我的英語並不好。 請在這個例子中保留代碼,讓我更容易理解! 安全不是必需的! (我會改正,當這一切工作這種方式)

頁的直播網址:http://xvilo.com/logs.php

+1

你的英語很不錯,但你爲什麼要輸入'!'這麼多?你對這個計劃真的很興奮嗎? – Barmar 2013-05-07 05:47:05

+0

@barmar總是很興奮;) – xvilo 2015-07-24 12:40:44

回答

3
<?php 
// Inialize session 
session_start(); 
unset($_SESSION['username']); 

if (isset($_POST['logout'])){ 
    session_start(); 
    session_destroy(); 
} 
// Check, if user is already login 
if (isset($_SESSION['username'])) { 
header('Location: location.php'); 
} 

if(isset($_POST['Submit'])){ 
    $msg=""; 

    if(empty($_POST['username'])){ 
    $msg="Please enter your username. "; 
    } 

    if(empty($_POST['password'])){ 
    $msg .="Please enter your password. "; 
    } 

    if(empty($msg)){ 
    include('include/databaseconnection.php'); 
    $un = $_POST['username']; // enter username opt. 

     $_SESSION['username'] = $nick_from_database; 
     setcookie("username", $_POST['username']); 

    $sql = "SELECT username, password FROM `table` WHERE username ='$un'"; 
    $sql .= "AND password='".md5($_POST['password'])."'"; 

    if(!$res = mysql_query($sql)){ 
     $msg.=mysql_error(); 
    }else{ 
     //user exists in system, set the session variables 
     if (mysql_num_rows($res)==1) { 

     while($row = mysql_fetch_assoc($res)){ 
     // the user name and password match, 
      $_SESSION['username'] = $row['username']; 
      $_SESSION['password'] = $_POST['password']; 
     } 
     } 
    else { 
     $msg = "Your login details did not match"; 
     } 
    } 
} 

?> 
0

Xvilo,你需要轉換的任何「somepassword」用戶已發送使用以前使用的相同功能進行保存在數據庫「HndOe34」上,然後你可以比較兩者。例如: -

... 
    $pass_from_user = FUNCTION_USED_BEFORE_TO_CONVERT($pass); 

    if($pass_from_user === $pass_from_db) 
    { 
... 
1

檢查密碼,使用查詢,如:

SELECT COUNT(*) matches FROM login_db 
WHERE nick = ? AND password = ? 

其中佔位符被替換爲用戶名和登錄表單哈希密碼。 如果這返回matches = 1那麼登錄成功,如果matches = 0那麼它失敗。

此外,您的登錄表單缺少用戶名字段。

+0

barmar,用戶名是不需要的,用戶只能得到一個密碼!然後我必須檢查輸入的密碼是否在de數據庫中,並將nick放入會話變量中! – xvilo 2013-05-11 18:56:23