Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Сохранение сессии и добавление данных в БД
Форумы портала PHP.SU » » Вопросы новичков » Сохранение сессии и добавление данных в БД

Страниц (1): [1]
 

1. Moby - 22 Марта, 2019 - 13:35:03 - перейти к сообщению
Друзья, подскажите начинающему. У меня есть страница на которой есть форма с first_name, last_name, email. После отправки формы и записи данных в таблицу страница не перегружается и появляется другая форма с паролем. Как мне сохранить сессию и записать пароль в БД для ID того же юзера? Код PHP обработчика форм:

<?php
if (isset($_POST['first_name'])) { $first_name = $_POST['first_name']; if ($first_name == '') { unset($first_name);} }
if (isset($_POST['last_name'])) { $last_name = $_POST['last_name']; if ($last_name == '') { unset($last_name);} }
if (isset($_POST['email'])) { $email=$_POST['email']; if ($email =='') { unset($email);} }
if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }

if (empty($first_name) or empty($last_name) or empty($email))
{
exit ();
}

$first_name = stripslashes($first_name);
$first_name = htmlspecialchars($first_name);

$last_name = stripslashes($last_name);
$last_name = htmlspecialchars($last_name);

$email = stripslashes($email);
$email = htmlspecialchars($email);

$password = stripslashes($password);
$password = htmlspecialchars($password);

$first_name = trim($first_name);
$last_name = trim($last_name);
$email = trim($email);
$password = trim($password);

include ("bd.php");


$result = mysql_query("SELECT id FROM cust WHERE first_name='$first_name'",$db);
$myrow = mysql_fetch_array($result);
if (!empty($myrow['id'])) {
exit ();
}


$result2 = mysql_query ("INSERT INTO cust (first_name,last_name,email,password) VALUES('$first_name','$last_name','$email','$password')");

?>
2. andrewkard - 22 Марта, 2019 - 14:06:13 - перейти к сообщению
Moby пишет:
Как мне сохранить сессию

Вот пример
PHP:
скопировать код в буфер обмена
  1.  
  2.     function get($key, $defaultValue = null)
  3.     {
  4.  
  5.         return isset($_SESSION[$key]) ? $_SESSION[$key] : $defaultValue;
  6.     }
  7.  
  8.     function set($key, $value)
  9.     {
  10.         $_SESSION[$key] = $value;
  11.     }
  12.  


не забыть открыть сессию session_start();

Кроме того, сразу же переходите на mysqli или PDO и подготовленные выражения.
Хранить пароль в открытом виде НЕЛЬЗЯ, посмотрите в сторону
http://php.net/manual/ru/functio...sword-verify.php
http://php.net/manual/ru/functio...assword-hash.php
т.е. храним не сам пароль а его хеш
3. Moby - 23 Марта, 2019 - 14:56:25 - перейти к сообщению
Ок, спасибо. А как мне теперь записать пароль в нужный ID?
4. Moby - 25 Марта, 2019 - 17:34:32 - перейти к сообщению
Еще такой вопрос. Я получаю данные из двух форм, как мне обновить запись password в таблице, если данные из форм email и hidden_email совпадают, а если не совпадают то сделать новую запись? Пробую следующим образом, но ничего не получается:

PHP:
скопировать код в буфер обмена
  1.  
  2. if (isset($_POST['first_name'])) { $first_name = $_POST['first_name']; if ($first_name == '') { unset($first_name);} }
  3. if (isset($_POST['last_name'])) { $last_name = $_POST['last_name']; if ($last_name == '') { unset($last_name);} }
  4. if (isset($_POST['email'])) { $email=$_POST['email']; if ($email =='') { unset($email);} }
  5. if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }
  6. if (isset($_POST['hidden_email'])) { $hidden_email=$_POST['hidden_email']; if ($hidden_email =='') { unset($hidden_email);} }
  7.  
  8. include ("bd.php");
  9.  
  10. $result3 = mysql_query("SELECT id FROM cust WHERE email='$hidden_email'",$db);
  11. $myrow = mysql_fetch_array($result3);
  12. if (!empty($myrow['id'])) {
  13. UPDATE cust SET password = $password WHERE email = $hidden_email;
  14. }
  15. else {
  16. $result2 = mysql_query ("INSERT INTO cust (datetime,first_name,last_name,email,password) VALUES(now(),'$first_name','$last_name','$email','$password')");
  17. }
  18.  
5. andrewkard - 25 Марта, 2019 - 18:24:10 - перейти к сообщению
Посмотрите внимательно на строку 13
6. Moby - 25 Марта, 2019 - 18:49:32 - перейти к сообщению
Извиняюсь, а в чем ошибка?
7. andrewkard - 26 Марта, 2019 - 10:11:46 - перейти к сообщению
andrewkard пишет:
mysql_query("SELECT id FROM cust WHERE email='$hidden_email'",$db);

andrewkard пишет:
UPDATE cust SET password = $password WHERE email = $hidden_email;

неужели не очевидно?

 

Powered by ExBB FM 1.0 RC1