Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2019, 17:45   #1
ROM710
Форумчанин
 
Регистрация: 24.02.2014
Сообщений: 144
По умолчанию Как дописать код регистрации пользователя ?

Здравствуйте всем, нужна помощь - как закончить код чтобы он возвращал на страницу регистрации при не правильной записи. У меня он ошибку показывает на странице регистрации, но все равно в БД заносит. Кто сможет подскажите ?

Код:
elseif (!preg_match("/\A(\w){7,20}\Z/", $_POST['pass'])) {
 echo '<br><font color="red"><img border="0" src="error.gif" alt="Пароль слишком короткий!">Пароль слишком короткий! Пароль должен быть не менее 7 символов! </font>';
 }
ROM710 вне форума Ответить с цитированием
Старый 05.05.2019, 22:16   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

вообще, без целого файла предлагать что-то конкретное трудно, тут телепатия нужна...
ну, попробуйте написать так:
Код:
elseif (!preg_match("/\A(\w){7,20}\Z/", $_POST['pass'])) {
 echo '<br><font color="red"><img border="0" src="error.gif" alt="Пароль слишком короткий!">Пароль слишком короткий! Пароль должен быть не менее 7 символов! </font>';
 exit(); 
 }
но, может и не сработать, тут всё зависит от вложенности процедур обработки и где осуществляется запись данных в БД.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.05.2019, 07:58   #3
ROM710
Форумчанин
 
Регистрация: 24.02.2014
Сообщений: 144
По умолчанию

Спасибо Serge_Bliznykov , протелепатил верно. Все работает. Попробуй еще раз пожалуйста - не могу добиться работы md5, что тут не так.
Код:
if ($md5 = md5($str) === '1afa148eb41f2e7103f21410bf48346c') $str = $str."Введите пароль<br>";
	else $pass=trim($_POST['pass']); 

	if ($err=="")
		{
		mysql_query("INSERT INTO akk (akk, email, pass, tel, contakt, blok, id_dostup, data)  VALUES ('".$name."', 
		'".$email."', '".$pass."', '".$tel."', '".$contakt."', '0', '".intval($default_dostup)."', NOW())");
		
		$ins=mysql_insert_id();
Записывает в БД пароль без шифра
ROM710 вне форума Ответить с цитированием
Старый 07.05.2019, 09:23   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от ROM710 Посмотреть сообщение
Записывает в БД пароль без шифра
это исправить нетрудно.
Код:
mysql_query("INSERT INTO akk (akk, email, pass, tel, contakt, blok, id_dostup, data)  VALUES ('".$name."', 
		'".$email."', '".md5($pass)."', '".$tel."', '".$contakt."', '0', '".intval($default_dostup)."', NOW())");
но
1) не уверен, что после этого у пользователя получится залогиниться. Ведь и проверять нужно будет md5 пароля.


2)
Цитата:
Сообщение от ROM710 Посмотреть сообщение
Код:
if ($md5 = md5($str) === '1afa148eb41f2e7103f21410bf48346c') $str = $str."Введите пароль<br>";
	else $pass=trim($_POST['pass']); 

	if ($err=="")

это какой-то очень непонятный изврат описан.
я не могу понять, что здесь выполняется,
но точно могу сказать, что так быть не должно!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.05.2019, 10:29   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

мд5 это хэш, а не шифр.
Который уже давно не рекомендуется использовать для паролей.

Но кого он тут от чего спасет когда можно просто SQL инъекцию сделать?



https://en.wikipedia.org/wiki/Prepar...tement#PHP_PDO

https://www.google.com/search?q=sql+injection

www.phptherightway.com/#databases / http://getjump.github.io/ru-php-the-...BD%D1%8B%D1%85

ЗЫ data это обычно "данные", а не "дата".
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 07.05.2019 в 12:11.
Alex11223 вне форума Ответить с цитированием
Старый 07.05.2019, 12:16   #6
ROM710
Форумчанин
 
Регистрация: 24.02.2014
Сообщений: 144
По умолчанию

Serge_Bliznykov в этот раз пишет ошибку - синтаксическая ошибка, неожиданная T_STRING в Z\registr.php on line 56
Я то же так думаю, что тут где то не так, давно мучаюсь.

Alex11223 Все это читал, понимаю, но тут - если я не разберусь с этим, дальше как идти. Хочу довести этот до конца, а потом переделать. По другому не смогу.
ROM710 вне форума Ответить с цитированием
Старый 07.05.2019, 12:28   #7
ROM710
Форумчанин
 
Регистрация: 24.02.2014
Сообщений: 144
По умолчанию

Serge_Bliznykov Поспешил тебя огорчить, Я сейчас подправил окончание кода и все заработало. Да но входа нет, ты был прав. Как же теперь сделать проверку правильно ???

Последний раз редактировалось ROM710; 07.05.2019 в 12:35.
ROM710 вне форума Ответить с цитированием
Старый 08.05.2019, 07:04   #8
ROM710
Форумчанин
 
Регистрация: 24.02.2014
Сообщений: 144
По умолчанию

Добрый день, вот страница проверки пароля, пытаюсь подправить, но входа нет, не получается. Serge_Bliznykov или кто еще понимает, подскажите что здесь не так ?
Код:
$bp="../";
if($_GET['bp'])
$bp=$_GET['bp'];

$MM_redirectLoginSuccess = "edit_akk.php";
$action = $_SERVER['PHP_SELF'];


if ((isset($_REQUEST["MM_logn"])) && ($_REQUEST["MM_logn"] == "logn")) 
{
	if ((!empty($_REQUEST['email'])) && (!empty($_REQUEST['pass']))) 
	{
	$email=trim(anti($_REQUEST['email']));
	$pass=trim(anti($_REQUEST['pass']));
	
  	$r_log = mysql_query("SELECT * FROM akk WHERE  email='".$email."' and pass='".$pass."'"); 
  	$n_log = mysql_num_rows($r_log);
  	$rr_log = mysql_fetch_array($r_log);
  	if ($n_log>0) 
  		{
    	$_SESSION['ID_P']=array(
		1=>$rr_log['id_akk'], 
		2=>md5($_SERVER['REMOTE_ADDR']),
		3=>$rr_log['contakt']
		);
		header ("Location: ".$MM_redirectLoginSuccess);
  		} 
  	else 
  		{
		$err = 'Неверный email или пароль<br><a class="iframe" href="logpass_zab.php">Забыли пароль?</a>';
		}
	} 
}

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Вход</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="robots" content="nofollow" />
<link rel="stylesheet" href="../style/style.css" type="text/css">
<link rel="stylesheet" type="text/css" href="../style/jquery.fancybox.css" media="screen" />

<script type="text/javascript" charset="utf-8" src="../js/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="../js/jquery.easing.1.3.js"></script>
<script type="text/javascript" src="../js/jquery.fancybox-1.2.1.pack.js"></script>
<script type="text/javascript" src="../js/fancy.js"></script>

</head>

<body>
<table width=100%>
	<tr height=64>
		<td width=64>
		<a href="<?=$bp?>"><img border=0 src="<?=$bp.'icon/8.gif'?>" /></a>
		<td align=center><h3>Вход</h3>
	<tr>
	<td colspan=2>
<?
if($err) echo "<p><font color=red>".$err."</font></p>";
?>


<form name="form1" method="POST" action="<?=$action?>">
<table>
	<tr>
		<td align="right" width="150">
  		email
		<td>    
    	<input name="email" type="text" size="20" >

	<tr>
		<td align="right" >
		password
		<td>
    	<input name="pass" type="password" size="20" >

	<tr>
		<td align="right" >
    	<input class="submit" type="submit" name="Submit" value="Войти">
		<input type="hidden" name="MM_logn" value="logn">
		<td>

</table>
</form>
</table>

</body>
</html>
ROM710 вне форума Ответить с цитированием
Старый 08.05.2019, 09:34   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от ROM710 Посмотреть сообщение
Код:
$r_log = mysql_query("SELECT * FROM akk WHERE  email='".$email."' and pass='".$pass."'");
замените на
Код:
$r_log = mysql_query("SELECT * FROM akk WHERE  email='".$email."' and pass='".md5($pass)."'");
И, как только заработает, СРАЗУ же займитесь защитой от атаки через входные данные (санитазация входных данных).

почитайте

http://phpfaq.ru/mysql/slashes

https://habr.com/ru/post/143035/


если кратко, вот то, что Вам нужно сделать.
только вместо $_GET['input_text'] поставьте свои значения входных данных.

Цитата:
Если вы не предполагаете вхождение html тегов, то лучше всего сделать такую фильтрацию:
Код:
$input_text = strip_tags($_GET['input_text']);
$input_text = htmlspecialchars($input_text);
$input_text = mysql_escape_string($input_text);
strip_tags — убирает html теги.
htmlspecialchars — преобразует спец. символы в html сущности.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.05.2019, 16:05   #10
ROM710
Форумчанин
 
Регистрация: 24.02.2014
Сообщений: 144
По умолчанию

Serge_Bliznykov смотри пишет - ,,Ошибка синтаксического анализа: синтаксическая ошибка, неожиданная T_ELSE в Z:\home\s\pk.php on line 25,,
Код:
<?
if($_GET['vihodu'] && $_SESSION['ID_P'])
unset($_SESSION['ID_P']);

$site_1=$_SERVER['HTTP_REFERER'];
$site_2=doman_name($site_1);
$sites_1=$_SERVER['HTTP_HOST'];
$sites_2=doman_name($sites_1);
if($site_2[1] != $sites_2[1])
exit();

$MM_restrictGoTo = "../";

if (!isset($_SESSION['ID_P'])) 
	{
  	echo "<HTML><HEAD><meta http-equiv='Refresh' charset='utf-8' content='0; URL=".$MM_restrictGoTo."'></HEAD></HTML>";
  	exit();
	} 
elseif($_SESSION['ID_P'][2] != md5($_SERVER['REMOTE_ADDR']));
	{
	unset($_SESSION['ID_P']);
	echo "<HTML><HEAD><meta http-equiv='Refresh' charset='utf-8' content='0; URL=".$MM_restrictGoTo."'></HEAD></HTML>";
	exit();
	}
else $_SESSION['ID_P'][1] = intval($_SESSION['ID_P'][1]);  - ВОТ 25я СТРАНИЦА !!!

	
$base_path="../";
$bp="../";

?>
ROM710 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Форма для регистрации ТайлерДернер Windows Forms 1 13.07.2017 23:49
Расставление элементов авторизации и регистрации пользователя lexflax PHP 5 06.04.2014 18:57
Журнал регистрации Vyacheslav89reg Фриланс 3 02.05.2011 22:08
Программа регистрации пользователя SnowSin Помощь студентам 0 23.11.2009 19:30
В чём ошибка при регистрации cheef Общие вопросы Delphi 2 01.05.2009 08:28