2013-05-07 2 views
0

Я пытаюсь создать лог-журнал IRC в php! Многие из них уже работают, но я хочу защитить журнал с помощью пароля пользователя!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 [ «ник»] должен стать его ник (хранится в той же строке)

Я надеюсь, что вы все поняли, что мне нужно, потому что мой английский не так хорошо. Пожалуйста, сохраните код в этом примере, чтобы я понял его проще! БЕЗОПАСНОСТЬ НЕ НУЖНА! (Я зафиксирует, что, когда все это работает таким образом)

Живой URL страницы: http://xvilo.com/logs.php

+1

Ваш английский очень хороший, но почему вы набираете '!' Столько? Вы действительно в восторге от этой программы? – Barmar

+0

@barmar всегда взволнован;) – xvilo

ответ

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, имя пользователя не нужно, пользователь получает пароль! Затем я должен проверить, введен ли введенный пароль в базу данных и поместить ник в переменную сеанса! – xvilo