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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2019, 16:15   #11
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну так смотрите выше что с синтаксимом не так, ;, скобки и т.д.

Или поставьте IDE типа PHPStorm чтобы подсказывала и форматировала нормально код.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 08.05.2019, 16:18   #12
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от ROM710 Посмотреть сообщение
Serge_Bliznykov смотри пишет
так это не страница регистрации. А что с регистрацией?


Цитата:
Сообщение от ROM710 Посмотреть сообщение
Ошибка синтаксического анализа: синтаксическая ошибка, неожиданная T_ELSE в Z:\home\s\pk.php on line 25,,
Код:
ну и правильно пишет:

Цитата:
Сообщение от ROM710 Посмотреть сообщение
Код:
elseif($_SESSION['ID_P'][2] != md5($_SERVER['REMOTE_ADDR']));
точка с запятой не нужна
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.05.2019, 09:58   #13
ROM710
Форумчанин
 
Регистрация: 24.02.2014
Сообщений: 144
По умолчанию

Здравствуйте форумчане, поздравляю с Праздником Победы. Желаю всем здоровья и успехов в делах. Alex11223 и Serge_Bliznykov спасибо за подсказки, только благодаря им хоть что то получилось. Только до убирания точки с запятой дело не дошло, я как бы не сижу сложа руки пока придет помощь, что то сам пробовал, менял, начинал сначала - в итоге заработало с точкой и запятой. Только в личном кабинете в поле ваш пароль выводит 32 точки ? Сейчас ели убрать точку с запятой пишет - непредвиденная T_VARIABLE. Теперь можно заняться усилением шифра пароля, буду учить, буду пробовать. Еще раз огромное спасибо за помощь.
ROM710 вне форума Ответить с цитированием
Старый 09.05.2019, 10:11   #14
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от ROM710 Посмотреть сообщение
буду учить, буду пробовать
да что там пробовать, вызвать password_hash() при добавлении в БД и при сравнении для входа.

Лучше учите про разницу между хешированием и шифрованием )

Ну и для запросов к БД возьмите PDO или mysqli_ вместо устаревшего mysql_ и используйте prepared statement.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 09.05.2019, 10:59   #15
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от ROM710 Посмотреть сообщение
Здравствуйте форумчане, поздравляю с Праздником Победы. Желаю всем здоровья и успехов в делах.
Спасибо!
С праздником Победы!!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.05.2019, 09:56   #16
ROM710
Форумчанин
 
Регистрация: 24.02.2014
Сообщений: 144
По умолчанию

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

if($_POST['sub'])
	{
	$cap_a = trim($_POST['cap']);
	if(!$cap_a)
	$err .= 'Не указан защитный код<br>';
	else
		{
		if($_SESSION['real_code'] != $cap_a)
		$err .= 'Неверно указан защитный код<br>';
		else
			{
			$cap_a = number_format($cap_a,0,"",",");
			$cap_b = $_POST['ip_address'];
			if($cap_a!=$cap_b) $err .= 'Неверно указан защитный код<br>';
			}
		}
	if(isset($_SESSION['real_code'])) unset($_SESSION['real_code']);
	
	
	
	if(!empty($_POST['email']))
		{
		$email=anti(trim($_POST['email']));
		$r=mysql_query("SELECT * FROM akk WHERE email='".$email."'");
		$nr=mysql_num_rows($r);
		if($nr)
			{
			$rr=mysql_fetch_array($r);
			}
		else $err .= 'Пользователя с таким e-mail нет в базе<br>';
		}
	else $err .= 'Не указан e-mail<br>';

	if(!$err)
		{
		$headers="Content-type: text/html;charset=UTF-8 \r\n";
		$headers .= "From: ".$rru['email']." <".$rru['email'].">\r\n"; 
		$thm="Восстановление пароля";
		$c='Добрый день!<br>
		Вы, или кто-то от Вашего имени запросил данные на восстановление забытого пароля к Вашему аккаунту
		<br>
		Ваш пароль: '.$rr['pass'].'
		<br>
		С уважением, 
		администрация сайта '.$_SERVER['HTTP_HOST'];

		if (@mail_utf8($email, $thm, $c, $rru['email'])) 
		$ot = '<p><font color=green>Письмо с паролем отправлено на Ваш почтовый ящик</font></p>';
		else 
		$err = 'Не удалось отправить письмо на указанный e-mail<br>Попробуйте еще раз';
		}
	}

?>
<!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">
<script type="text/javascript" charset="utf-8" src="../js/jquery-1.4.4.min.js"></script>
</head>

<body>
<table width=100%>
	<tr height=64>
		<td width=64>
		 <img border=0 src="<?=$bp.'icon/8.gif'?>" />
		<td align=center><h3>Восстановление забытого пароля</h3>
	<tr>
	<td colspan=2>

<?
if($err) echo "<p><font color=red>".$err."</font></p>";
if(!$ot)
	{
	?>
	<form method="post" action="">
	<table>
		<tr>
			<td width="250" align="right">
			<font size=+1 color=red>*</font>
			E-mail, указанный при регистрации
			<td>
			<input type="text" name="email" value="<?=$email?>">
		<tr>
			<td colspan=2>
			  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			    <? 
			//$font_name[] = array(18, "../blok/new1.ttf"); 
			$font_name[] = array(18, "../blok/new2.ttf"); 
			//$font_name[] = array(20, "../blok/new3.ttf"); 
			//$font_name[] = array(22, "../blok/new4.ttf"); 
			shuffle($font_name);
	
			$m_rand1=1005;
			$m_rand2=9991;
			$cap_img='../tmp_capcha/'.ip2long($_SERVER['REMOTE_ADDR']).'.jpg';
			@mt_srand(time());
			
			$cap_int=mt_rand($m_rand1,$m_rand2);
			$_SESSION['real_code']=$cap_int;
			if($typ_captcha && function_exists('cifr'))
			cifr($cap_int, $cap_img);
			else
				{
				$cap_str=code($cap_int);
				$im=imagecreate(470, 26);
				imagecolorallocate($im,255,255,255);
				$color=imagecolorallocate($im,100,100,100);
				@imagettftext($im, $font_name[0][0], 0, 0, 19, $color, $font_name[0][1], $cap_str);
				imagejpeg($im, $cap_img);
				imagedestroy($im);
				}
			
			echo '<img align="right" border="0" src="'.$cap_img.'?id='.time().'"><br>';
			?>
		<tr>
			<td align="right">
			<font size=+1 color=red>*</font> Введите защитный код цифрами
			<td>
			<input type="text" name="cap" id="cap" value="">
			<input type="hidden" name="ip_address" id="ip_address" value="<?=$_SERVER['REMOTE_ADDR']?>">
		<tr>
			<td  align="right">
			<input class="submit" type="submit" name="sub" value="Отправить">
			<td>
	</table>
	</form>
	<?
	}
else echo $ot;
?>
</table>
<script type="text/javascript" charset="utf-8" src="../js/tb.js"></script>

</body>
</html>
ROM710 вне форума Ответить с цитированием
Старый 10.05.2019, 10:00   #17
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Так посмотрите что делают все нормальные сайты. Они не отправляют пароль ни в каком виде никогда, а просто дают возможность сменить пароль.
Цитата:
Сообщение от ROM710 Посмотреть сообщение
уже кучу вариантов перепробовал, либо письмо приходит без пароля, либо 32 знака,
Вы так и не почитали что такое хеширование?
Из результата хорошего криптографического алгоритма хеширования невозможно получить исходные данные (только перебором).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 10.05.2019 в 10:05.
Alex11223 вне форума Ответить с цитированием
Старый 10.05.2019, 15:42   #18
ROM710
Форумчанин
 
Регистрация: 24.02.2014
Сообщений: 144
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Они не отправляют пароль ни в каком виде никогда, а просто дают возможность сменить пароль.
А если пользователь забыл пароль как он войдет на сайт что бы его сменить ? Как вариант - он вводит адрес своей почты и ему приходит пароль. При вводе другого адреса пароль не отправляется.

А читать буду, как доделаю все погрешности. Иначе вообще запутаюсь.
ROM710 вне форума Ответить с цитированием
Старый 10.05.2019, 16:02   #19
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от ROM710 Посмотреть сообщение
как
Попробуйте восстановить пароль на любом современном сайте, или даже тут.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 11.05.2019, 01:06   #20
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от ROM710 Посмотреть сообщение
А если пользователь забыл пароль как он войдет на сайт что бы его сменить ? Как вариант - он вводит адрес своей почты и ему приходит пароль. При вводе другого адреса пароль не отправляется.
пользователь указывает свою почту, ему на почту приходит письмо, о том, что кто-то (возможно даже он сам) сделал запрос на восстановление пароля на сайте.
и ссылочка, перейдя по которой можно задать новый пароль для своего аккаунта.
Ещё эту ссылочку делают с ограниченным сроком жизни - если перейти не сразу (в отведённый интервал), то сайт скажет, то ссылка устарела.

Поймите, нигде в нормальной системе сейчас пароль не хранится. Ни в каком виде. Только хэш от пароля хранится.
Никто и никогда иначе как полным перебором не может получить пароль.
Поэтому сайт не может пользователю прислать его старый пароль. (А если может - то это дырка, а не сайт!)
Но, как вариант, можно, конечно, чтобы сайт сам автоматически сгенерировал новый пароль (возможно тоже временный), у себя сохранил его хеш и прислал этот новый пароль в письме пользователю, чтобы он с этим паролем смог зайти в свой аккаунт на сайте.
Это, конечно, не такая огромная дырища и некоторые сайты так делают (или делали раньше). Но всё равно не очень безопасно - письмо ведь идёт по открытым каналам и легко может быть перехвачено (скопировано) по пути следования.

А там дальше смотрите сами - как сделать лучше и надёжнее.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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