copyloc
@copyloc
Человек то я не глупый, просто притворяюсь

Как написать авторизация на php с использованием cookies или сессий?

Всем привет. Третий день пытаюсь написать авторизацию на php. Внизу я оставил код регистрации, специально убрал все проверки, классы и т.д, дабы не мешать основному содержанию. В чем суть вопроса: не могу написать простенькую авторизацию, хотя бы для теста. Как должно работать: есть два поля с именами name, password; в них водятся данные, если в таблице login есть данные name и password, то нужно сохранить в cookies эти данные, и перейти на страницу members, иначе говоря авторизоваться и не заходить в свой аккаунт повторно.

<form name = "login" method = "POST" action = "">
	<div>Введите логин: </div>
	<input  type = "text" size="40" name = "name" autocomplete = "off" value="<?php echo $_POST['name']; ?>" >
	<div>Введите имя и фамилию: </div>
	<input  type = "text" size="40" name = "firstname" autocomplete = "off" value="<?php echo $_POST['firstname']; ?>" >
	<div>Введите почту: </div>
	<input  type = "text" size="40" name = "email" autocomplete = "off" value="<?php echo $_POST['email']; ?>" >
	<div >Введите пароль: </div>
	<input  type = "password" size="40" name = "password" autocomplete = "off">
	<div>Повторите пароль: </div>
	<input type = "password" size="40" name = "passwordTwo" autocomplete = "off">
	<input type = "submit" value = "Отправить" name = "registr">
</form>

<?php 
	if (isset($_POST['registr']))
	{
		Connect_MySQL_database(); /* подключение к БД */
		mysql_select_db(DBUSERNAME) or die(mysql_error());
		$login = "INSERT INTO login (name, firstname, email, password) 
				  VALUES('".$_POST["name"]."', '".$_POST["firstname"]."', '".$_POST["email"]."', '".$_POST["password"]."')";
		mysql_query($login) or die(mysql_error());	
		echo "<div class = \"error\">Вы успешно зарегистрированы</div>";
		}
?>


login.php
<form name = "loginer" method = "POST" action = "">
  <div >Введите логин: </div><input type = "text" size="40" name = "name">
  <div >Введите пароль: </div><input type = "password" size="40" name = "password">
  <center><input type = "submit" value = "Отправить" name = "registr"></center>
</form>
  • Вопрос задан
  • 3694 просмотра
Пригласить эксперта
Ответы на вопрос 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
1) выкинуть mysql_* и использовать mysqli/PDO и prepared statements. У вас там уже можно SQL инъекции шмалять
2) экранируйте вывод данных, мол не просто echo $_POST, а echo htmlentities($_POST) или стриптегом пройтись что бы все инъекции скриптов убрать. У вас в шаблонах уже XSS уязвимость.
3) не работайте напрямую с $_POST.
4) не используйте куки, используйте сессии (они через куки всеравно привязываются)
5) хешируйте пароли. хотя бы md5 с рандомной солью. а еще лучше sha512.

Ну а если по делу - а где вы в куки то пишите? Я что-то не вижу вообще работы с куками/сессией. Посмотрите в дебагере браузера записались ли они.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Ведисофт Екатеринбург
от 25 000 ₽
YCLIENTS Москва
от 200 000 до 350 000 ₽
от 300 000 до 500 000 ₽