Как я аутентифицирую пользователя в PHP / MySQL?

Я должен проверить это, когда обновлю свой текст, и мне может понадобиться немного больше информации о том, что именно вы хотите, но если вы хотите, чтобы таблица была в середине текста, все, что вам нужно сделать, это удалить \begin{center} и \end{center}. R-фрагменты действительно используются в качестве копировальной пасты, где вы хотите, и даже работают как веб-ссылки, если хотите. Кроме того, вы можете использовать kable() из knitr для таблиц, и это иногда помогает, иногда ухудшает ситуацию. Я проверю позже, когда у меня будет лучший интернет.

8
задан Ólafur Waage 26 March 2009 в 13:44
поделиться

5 ответов

Один способ сделать это (ПРАВОВАЯ ОГОВОРКА: не обязательно лучшая практика):

$result = mysql_query("SELECT id FROM userdb WHERE username='$esclcusername' AND  password='$escpassword'") or die(mysql_error());
$row = mysql_fetch_array( $result );
$id = (int)$row['id'];
if($id > 0) {
    //log in the user
    session_start();
    $_SESSION['userId'] = $id;
    $_SESSION['username'] = $displayname;
}

... и на страницах, которые требуют аутентификации:

session_start();
if(!isset($_SESSION['userId'])) {
    die('You need to be logged in!!!');
} else {
    echo 'Welcome ' . $_SESSION['username'];
}

Читайте больше о сессиях PHP.

3
ответ дан 5 December 2019 в 06:54
поделиться

Вы могли использовать избранный оператор для получения от MySQL пароля для указанного имени пользователя. Если у Вас есть пустой набор результатов, то у Вас нет имени пользователя в таблице.

Если бы Вам нужен пользователь, чтобы аутентифицироваться больше чем на одной php странице, то один выбор использовал бы сессии (http://www.php.net/manual/en/function.session-start.php).

Кроме того, я думаю, что необходимо думать о безопасности, т.е. предотвращении Внедрения SQL:

$variable = mysql_real_escape_string($_POST['variable'])

и предотвращение "умереть" (обработка ошибок и возврат удобных для пользователя сообщений из сценария).

0
ответ дан 5 December 2019 в 06:54
поделиться

Можно использовать сессии. Сессии являются глобальными переменными, что, когда установлено, останьтесь с пользователем, в то время как он просматривает сайт.

Так как Вы изучаете PHP, испытываете это учебное руководство на официальном сайте.

Но то, что Вы сделали бы в теории, - когда соответствие имени пользователя и пароля, Вы устанавливаете переменную сеанса

$_SESSION["auth"] = true;
$_SESSION["user_id"] = $row["user_id"];

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

7
ответ дан 5 December 2019 в 06:54
поделиться

Это не прямой ответ на этот вопрос, а ХОРОШЕЕ значение - добавляют. Необходимо использовать функцию MySQL SHA1 для шифрования пароля прежде, чем сохранить в базу данных.

$user = $_POST['userid'];
$pwd = $_POST['password'];
$insert_sql = "INSERT into USER(userid, password) VALUES($user, SHA1($pwd))";

$select_sql = "SELECT * FROM USER WHERE userid=$user AND password=SHA1($pwd))";
12
ответ дан 5 December 2019 в 06:54
поделиться

Я также думал бы о не хранении паролей в Вашей базе данных. Односторонние хэши с MD5 или SHA1 являются способом добавить уровень безопасности на уровне дб.

См. http://php.net/md5 или http://php.net/sha1 для получения дополнительной информации.

0
ответ дан 5 December 2019 в 06:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: