2011-01-16 6 views
-2

Я новичок в PHP и пытаюсь сделать логин/сеанс для пользователя. Я продолжаю получать ошибки. Любая помощь будет принята с благодарностью.Проблема с PHP Login

<?php session_start();  
    include('./config.php'); 
    $email=$_POST['email']; 
    $email=htmlspecialchars($email); 
    $Password=$_POST['password']; 
    $Password=htmlspecialchars($Password); 
    $ip=$_SERVER['REMOTE_ADDR']; 
    $result = mysql_query("SELECT * FROM member WHERE email='$email' AND password='$Password'") or trigger_error(mysql_error()); 
    $count = mysql_num_rows($result); 
    while($row = mysql_fetch_array($result)){ 
$logfirstname=$row['firstname']; 
$loglastname=$row['lastname']; 
$logid=$row['id']; 
$logemail=$row['email']; 
$logphone=$row['phone']; 
$logbiz=$row['biz_id']; 
$logdate=$row['date_joined']; 
$logaddress=$row['address']; 
$logsponsored=$row['sponsored']; 
    } 
if ($count>0){ 
$_SESSION['auth']=1; 
$_SESSION['id']=$logid; 
$_SESSION['biz']=$logbiz; 
$_SESSION['name']=$logfirstname." ".$loglastname; 
$sess=$logfirstname." ".$loglastname; 
if ($logsponsored === "1") { $_SESSION['sponsored']=1;} 
mysql_query($result); 
mysql_close(); 
session_regenerate_id(); 
$sid=session_id(); 

include('./config.php'); 
$loginr=mysql_query("INSERT INTO login (sessionid, memberid, username, IPAddr, LogInTime, Status, name) 
VALUES ('$sid', '$logid', '$email', '$ip', NOW(), 'On', '$sess')"); 
mysql_query($loginr); 
mysql_close(); 

    header("Location: controlpanel.php"); 
    exit(); 
    }else{ 
    header('Location: login.php?fail=1'); 
    exit(); 
    } 

?>` 
+2

Подготовьтесь к пламени. – Stoosh

+7

Изучите магию отступов, пожалуйста. И если вам нужна помощь с проблемой, это МОЖЕТ помочь, если вы сообщите нам, ЧТО проблема. – Naatan

+4

И сообщение об ошибке? Должны ли мы угадать? Когда вы пойдете к доктору и скажите ему, что вы плохо себя чувствуете, вы ожидаете, что он просто вытащит волшебное зелье из своей сумки, чтобы исправить то, что вас беспокоит, не зная ничего о том, что такое болезнь? –

ответ

1

Как вы определили, что вы новичок, и я настоятельно рекомендую вам писать свою собственную систему входа/аутентификации в PHP, потому что слишком много вещей может пойти не так (нарушение безопасности). Я бы посоветовал вам использовать lightopenid, который очень прост в использовании.

+0

thats прохладный. Я попробую. –

+0

Очень прост в использовании! Он просто работает из коробки. – Alfred

4

1 - $email=htmlspecialchars($email);

Это не так, как вы дезинфицировать текст для запросов SQL. Это несколько предотвратит атаки XSS, но НИЧЕГО для SQL-инъекции. Вместо этого используйте mysql_real_escape_string().

2 - while($row = mysql_fetch_array($result)){

Предположительно только одна строка будет возвращена, так что нет смысла делать это в цикле. Просто выберите одну строку БЕЗ цикла while.

3 - if ($count>0){

не было бы умнее этого, прежде чем пытаться получить строку? Вы можете сделать полноту выборки/сеанс заселения в этом случае() вместо

4 - mysql_query($result);

На момент вы выполнить это, $ результата либо логическое значение FALSE (первоначальный вызов запроса не удался), A обработчик результата запроса mysql. это НЕ строка запроса, так что ваш вызов запрос не будет

5 - mysql_query($loginr);

см # 4 - $ loginr либо «ложь», или дескриптором. Почему запрос дважды?

+2

Престижность вам, действительно, чтению через это – Naatan

+0

Мне скучно сегодня ... :) –

+0

Эй, спасибо за помощь в этом ... Я знаю, что это был сосательный вопрос, извините за это ... I должен был дать ошибки, которые я получил ... В любом случае я сделал то, что вы сказали, и это сработало. Благодаря! –