| 
			| 
					
						| Svekor 
								Интересующийся    Offline | 
								|  | «  : 26-05-2019 13:56 »  |  | 
 
 Здравствуйте читающие. Пытаюсь сделать ссылку на Denwer со сроком жизни. Нашел урок в интернете, но и оригинал и мои все правки выдают какую ни будь ошибку. Кто сможет подскажите пожалуйста, что здесь не так ? $query = $db->prepare{"INSERT INTO pending_users (username, token, tstamp) VALUES (?, ?, ?)"
 };
 $query->execute{
 array(
 $username,
 $token,
 $_SERVER["REQUEST_TIME"]
 )
 };
 
 $url = "http://example.com/activate.php?token=$token";
 
 ///////
 
 $message = <<<ENDMSG
 Thank you for signing up at our site.  Please go to
 $url to activate your account.
 ENDMSG;
 
 mail($address, "Activate your account", $message);
 
 ///////
 
 // получаем токен
 if (isset($_GET["token"]) && preg_match('/^[0-9A-F]{40}$/i', $_GET["token"])) {
 $token = $_GET["token"];
 }
 else {
 throw new Exception("токен не валиден.");
 }
 
 В таком исполнении пишет - ,, Неустранимая ошибка: Uncaught исключение исключение с сообщением 'токен не валиден.- в ... Z:\home\site-15 \ www \ index.php: 34 трассировка стека: #0 {main},,
 // проверяем токен
 $query = $db->prepare("SELECT username, tstamp FROM pending_users WHERE token = ?");
 $query->execute(array($token));
 $row = $query->fetch(PDO::FETCH_ASSOC);
 $query->closeCursor();
 
 if ($row) {
 extract($row);
 }
 else {
 throw new Exception("токен не валиден.");
 }
 
 // активируем пользовательский аккаунт
 // ...
 
 // удаляем токен из базы
 $query = $db->prepare{
 "DELETE FROM pending_users WHERE username = ? AND token = ? AND tstamp = ?"};
 $query->execute(
 array(
 $username,
 $token,
 $tstamp
 )
 );
 
 // 1 день в секундах = 60 секунд * 60 минут * 24 часа
 $delta = 86400;
 
 // проверка
 if ($_SERVER["REQUEST_TIME"] - $tstamp > $delta) {
 throw new Exception("время жизни токена истекло.");
 }
 // активируем пользовательский аккаунт
 // ...
 
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #1 : 26-05-2019 18:22 »  |  | 
 
 Попробуйте правильно оформить пост, чтобы понять какой порядок вызова ваших методов |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| Svekor 
								Интересующийся    Offline | 
								|  | « Ответ #2 : 27-05-2019 09:22 »  |  | 
 
 Спасибо ребята, буду пробовать. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Svekor 
								Интересующийся    Offline | 
								|  | « Ответ #3 : 27-05-2019 14:48 »  |  | 
 
 Может кто подскажет уроки в интернете по написанию истекающих URL адресов.  С этим кодом не получается, я его уже несколько дней пробую в разных правках, все равно выдает какую ни будь ошибку. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #4 : 27-05-2019 19:46 »  |  | 
 
 Svekor, попробуй словами самому себе объяснить, что это должно делать и как это будет работать. Поверь, никаких уроков не нужно, только чуть-чуть логики. |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #5 : 28-05-2019 05:31 »  |  | 
 
 Svekor, попробуй словами самому себе объяснить, что это должно делать и как это будет работать. Поверь, никаких уроков не нужно, только чуть-чуть логики.
 Если упорядочить стартпост, то все станет на свои места |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| Svekor 
								Интересующийся    Offline | 
								|  | « Ответ #6 : 30-05-2019 14:11 »  |  | 
 
 Здравствуйте, я так понимаю что все кроется здесь - Код: (PHP) if (isset($_GET["token"]) && preg_match('/^[0-9A-F]{40}$/i', $_GET["token"])) {$token = $_GET["token"];
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Svekor 
								Интересующийся    Offline | 
								|  | « Ответ #7 : 31-05-2019 14:57 »  |  | 
 
  Здравствуйте, сейчас пробую частями, вот переделал начало кода, ошибку не пишет.  $token = md5(uniqid($username, true));if ($err=="")
 {
 mysql_query (
 "INSERT INTO pending_users (username, token, tstamp) VALUES ('".$username."','".$token."','".$tstamp."', )"
 );
 А вот следующая часть выдает ошибку - ,, Предупреждение: mysqli_query () ожидает, что параметр 1 будет строкой, массивом, заданным в on line 74.   mysql_query(array(
 '".$username."',
 '".$token."',
 $_SERVER["REQUEST_TIME"]
 )
 ); //// on line 74
   Что здесь не так ? пока не могу понять. Кто знает подскажите. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #8 : 31-05-2019 20:55 »  |  | 
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Svekor 
								Интересующийся    Offline | 
								|  | « Ответ #9 : 01-06-2019 05:24 »  |  | 
 
 RXL - Большое спасибо, все переделал. Ошибка ушла. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Svekor 
								Интересующийся    Offline | 
								|  | « Ответ #10 : 01-06-2019 15:26 »  |  | 
 
 Добрый вечер, следующая часть кода пишет - ,, Fatal error: Uncaught exception 'Exception' with message 'токен не валиден.' in register.php:96 Stack trace: #0 {main} thrown ,, else {throw new Exception ("токен не валиден.");
 }
 Я сегодня читал , пробовал разные варианты - либо все так, либо все ломает. Что здесь то не так?  Или ошибка может быть ниже .... ? Кто в силе подскажите. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #11 : 02-06-2019 06:54 »  |  | 
 
 Добрый вечер, следующая часть кода пишет - ,, Fatal error: Uncaught exception 'Exception' with message 'токен не валиден.' in register.php:96 Stack trace: #0 {main} thrown ,, else {throw new Exception ("токен не валиден.");
 }
 Я сегодня читал , пробовал разные варианты - либо все так, либо все ломает. Что здесь то не так?  Или ошибка может быть ниже .... ? Кто в силе подскажите.Ну... так вы же сами вызывает обработчик  - хотите без фатальных ошибок? echo |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| Svekor 
								Интересующийся    Offline | 
								|  | « Ответ #12 : 02-06-2019 07:14 »  |  | 
 
 Честно говоря не совсем понял ответа, но если поменять else на echo - ошибку пишет такую же.  |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #13 :  02-06-2019 11:12 »   |  | 
 
 Добрый вечер, следующая часть кода пишет - ,, Fatal error: Uncaught exception 'Exception' with message 'токен не валиден.' in register.php:96 Stack trace: #0 {main} thrown ,, else {throw new Exception ("токен не валиден.");
 }
 Я сегодня читал , пробовал разные варианты - либо все так, либо все ломает. Что здесь то не так?  Или ошибка может быть ниже .... ? Кто в силе подскажите.else {echo "токен не валиден.";
 }
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| Svekor 
								Интересующийся    Offline | 
								|  | « Ответ #14 : 02-06-2019 14:56 »  |  | 
 
 Нет, что то не так. В таком варианте - просто выводит на экран в постоянном режиме ,,токен не валиден,, Да ладно - начал все сначала.  Почему первая часть кода пишет - ,,Фатальная ошибка: звонок в функции-члена подготовить() на не-объект,,  $query = $db->prepare("INSERT INTO pending_users (username, token, tstamp) VALUES (?, ?, ?)"
 );
  Я пробовал другие варианты, ошибка уходит, но БД запись не идет. Это часть кода из урока. Я попробовал по своему - запись в БД идет.  mysql_query("INSERT INTO `pending_users` (`username`, `tstamp`,`token`) VALUES ('".$login."','".$tstamp."', '".md5($token)."')");  Честно говоря не удобно и надоедать на форуме, но поймите - очень нужно сделать.  Я прошу подскажите, что в изначальной части кода не так ? |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #15 : 02-06-2019 17:25 »  |  | 
 
 а где строка подключения к базе? |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| Svekor 
								Интересующийся    Offline | 
								|  | « Ответ #16 : 03-06-2019 05:36 »  |  | 
 
 Это файл register.php, регистрация пользователя работает. Я думаю, что здесь причина в том - все  делается на Denwer, а в нем нет библиотеки PDO. Не так ли ? |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Svekor 
								Интересующийся    Offline | 
								|  | « Ответ #17 : 03-06-2019 06:01 »  |  | 
 
 Да я сейчас вставил код  try {$db = new PDO(DB_DRIVER.":host=".DB_HOST.";dbname=".DB_NAME,DB_USER, DB_PASS);
 } catch (PDOException $e) {
 echo "Error: " . $e->getMessage();
 }
  в форму регистрации, пишет ошибку - ,,Error: could not find driver ,, А как установить   |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #18 : 03-06-2019 07:52 »  |  | 
 
 Видимо тут константа DB_DRIVER не определена. Замени ее на строку. Читай в доке о PDO.
 Бездумной копипастой много не наделаешь. Пора читать документацию и самоучители!
 |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Svekor 
								Интересующийся    Offline | 
								|  | « Ответ #19 : 03-06-2019 15:15 »  |  | 
 
 Согласен на все сто, я сегодня как раз и изучал PDO, делал пробные уроки.  |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Svekor 
								Интересующийся    Offline | 
								|  | « Ответ #20 : 04-06-2019 14:24 »  |  | 
 
 Здравствуйте еще раз, хорошо когда есть где что почитать, а вот сейчас дошел до  // 1 день в секундах = 60 секунд * 60 минут * 24 часа$delta = 86400;
 
 // проверка
 if ($_SERVER["REQUEST_TIME"] - $tstamp > $delta) {
 throw new Exception("время жизни токена истекло.");
 }
 
 // активируем пользовательский аккаунт
  и тут выдает ошибку ,,Error on line 61: parse error, unexpected T_VARIABLE($delta), expecting ')'! ,, Что здесь $delta не так ? где, что можно почитать ? Подскажите пожалуйста. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #21 : 04-06-2019 22:32 »  |  | 
 
 Нередко синтаксическая ошибка в том же файле, написанная выше, сбивает парсер и он ругается совсем не там. Ищи выше по коду пропущенную скобку. |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Svekor 
								Интересующийся    Offline | 
								|  | « Ответ #22 : 05-06-2019 07:51 »  |  | 
 
 Понял, спасибо |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	|  |