Скрипт входа для PostGreSQL и PHP не работает - PullRequest
0 голосов
/ 24 марта 2010

Я довольно новичок в логинах, что не так уж и плохо со мной, лол, но я должен учиться, поэтому не отговаривайте меня.

Я пробовал это до сих пор

<?php

$error = "";

$conn = pg_connect("host=localhost dbname=brittains_db user=brittains password=XXXX" );

$sql = "SELECT * FROM logins";
$result = pg_query($conn, $sql);

if($_SERVER["REQUEST_METHOD"] == "GET") {
    $userName="";
    $password="";
}

else if($_SERVER["REQUEST_METHOD"] == "POST") {

    $userName=trim($_POST["userNameLogin"]);
    $password=trim($_POST["passwordLogin"]);

    if(pg_fetch_result($results, $userName, "userName")==true 
       && pg_fetch_result($results, $password, "userName")==true) {
        setcookie("userIDforDV", $userName, time()+43200);
    }
    else {
        $error = "Your username and or password is incorrect";
    }

}

$userName = $_COOKIE['userIDforDV'];

if(isset($userName) && $userName!="") {
    echo "Welcome " . $userName;
}

echo $error;

?>

<form action="<?php echo $_SERVER['PHP_SELF'];  ?>" method="post">
    <table>
        <tr>
            <td class="signupTd">
                User Name:&nbsp;
            </td>
            <td>
                <input type="text" name="userNameLogin" value="" size="20" />
            </td>
        </tr>
        <tr>
            <td class="signupTd">
                Password:&nbsp;
            </td>
            <td>
                <input type="password" name="passwordLogin" value="" size="20" />
            </td>
        </tr>
        <tr>
            <td class="signupTd" colspan="2">
                <input type="submit" name="submit" value="Submit"/>
            </td>
        </tr>
    </table>
</form>

Это была идея, которую я придумал ... но, вероятно, это действительно плохая идея, и она не работает ... как я могу поступить правильно? Мне нужны действительно подробные описания, пожалуйста.

Кстати, мой SQL:

CREATE TABLE logins(
    userName VARCHAR(25) NOT NULL PRIMARY KEY,
    password VARCHAR(25) NOT NULL,
    firstName VARCHAR NOT NULL,
    lastName VARCHAR NOT NULL,
    ageDay INTEGER NOT NULL,
    ageMonth INTEGER NOT NULL,
    ageYear INTEGER NOT NULL,
    email VARCHAR(255) NOT NULL,
    createDate DATE
);

и моя регистрационная форма уже создана и работает, и у меня есть пользователи в моей базе данных ... они просто не могут войти.

Ответы [ 2 ]

3 голосов
/ 24 марта 2010

check http://php.net/manual/en/function.pg-fetch-result.php комментарии. редактировать : пароль должен быть varchar (32) и использовать пароли md5 (или даже лучше 64 и использовать sha1). Кроме того, я не знаком с pgSQL в целом, однако IMO правильный способ будет использовать SQL запрос для проверки вместо использования pg_fetch_result.

$query = "SELECT * FROM logins WHERE userName = '$userName' AND password = md5('$password');";
$result = pg_query($conn, $query);
if(pg_num_rows($result) != 1) {
    // do error stuff
} else {
    // user logged in
}
0 голосов
/ 24 марта 2010

Если вы хотите увидеть в действии феноменальный сценарий входа в систему (и, следовательно, извлечь уроки из него), посмотрите ядро ​​jpmaster77: http://evolt.org/node/60384 Он имеет мощную инфраструктуру на основе классов и в полной мере использует ваш объектно-ориентированный фон. , Он работает "из коробки" и является бесплатным.

glhf

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...