Здравствуйте ! Помогите разобраться как поставить setcookie и header (Location) в середину или конец кода (если конечно такое возможно !). Правильно ли у меня сделана система хэширования ? Ну и наконец помогите разобраться как заносить хэш и ip в базу данных (знаю что это легко, но т.к. я новичок в этом деле, я уже запутался...). PHP: <?php setcookie("id", $myrow['id'], time()+60*60*24*30); setcookie("hash", $hash, time()+60*60*24*30); //-- if (isset($_POST['loginlog'])) { $login = $_POST['loginlog']; } if ($login == '') { unset($login); } if(isset($_POST['passwordlog'])) { $password = $_POST['passwordlog']; } if ($password == '') { unset($password); } //-- if (empty($login) or empty ($password)) { $error400 = true; } //--random line function generateCode ($length = 6){ $chars = "abcdefghijklmnopqrstuvwxyzABCDFGHIJKLMOPQRSTUVWXYZ0123456789"; $code = ""; $clean = strlen($chars) - 1; while (strlen($code) < $length){ $code .= $chars[mt_rand(0,$clean)]; } return $code; } //-- $login = stripslashes($login); $login = htmlspecialchars($login); $password = stripslashes($password); $password = htmlspecialchars($password); //-- $login = trim($login); $password = trim($password); //-- include ("bd.php"); //-- $result = mysql_query("SELECT * FROM userg WHERE login='$login'",$db); $myrow = mysql_fetch_array($result); //-- if (empty($myrow['password'])) { $error404 = true; } if ($myrow['password'] === md5(md5($password))) { $hash = md5(generateCode(10)); $ip = ", user_ip=INET_ATON('".$_SERVER['REMOTE_ADDR']."')"; mysql_query("UPDATE users SET user_hash='".$hash."' ".$ip." WHERE id='".$myrow['id']."'"); } else { $error401 = true; } //-- ?>
Читай книги по HTML, PHP, MySQL для новичков, там это есть с основами. http://www.ozon.ru/context/detail/id/137538198/ Возможно, include там для примера, можно и без него, главное понять логику, что весь вывод можно собрать в переменную, а потом уже в конце когда все заголовки отправлены, можно и вывод сделать https://php.ru/forum/threads/file_get_contents-proisxodit-redirekt-na-glavnuju.59169/#post-476516 Нет, сейчас можно и безопаснее https://habrahabr.ru/post/194972/ md5 старый и не надёжный. Не надо так делать, пусть в базе будет оригинал, а вот при выводе на странице, уже можно htmlspecialchars применять. Тут сразу две ошибки: 1. mysql_* функции в PHP7 удалили, используй mysqli_* или PDO. 2. Ты не фильтруешь $login, не поможет htmlspecialchars, надо использовать подготовленные запросы или специальные метода https://secure.php.net/manual/ru/mysqli.real-escape-string.php https://secure.php.net/manual/ru/mysqli.prepare.php https://secure.php.net/manual/ru/pdostatement.execute.php Зачем в cookie записывать хэш?
1. Хорошо, постараюсь разобраться с этим. 2. Это пока что временный вариант. 3. Вы имеете ввиду вывод на страницу например через echo ? 4. У меня вообще путаница возникает с этой базой данных... Непривычный синтаксис (для меня) запросов и в целом общения с ней (непривычный потому что особо не изучал эту тему, пока PHP и всё-такое). 5. Ответ прост ! Я бы назвал это "списал" , до этого была самая простая регистрация, но мне показалось, что надо сделать всё "по-красоте", ну и я случайно наткнулся на статью (https://habrahabr.ru/post/13726/) и решил попробовать сделать. Начал смотреть этот код и вникать что, да зачем, и что-то делать по-своему, но как видите даже смотря на чужой код наляпал ошибок. Спасибо вам огромное за критику и советы !!!
будет что-то не понятно, то спрашивай. На счёт той статьи, ей почти 10 лет, не стоит по ней что-то делать. Лучше книги для начинающих и задавай тут вопросы.