Я никогда не работал с $ _COOKIES, и теперь мне поставили задачу заставить его работать.
Я слежу за парой руководств в Интернете.
Найдено здесь: http://www.phpnerds.com/article/using-cookies-in-php/2
А потом вот: https://thewikihow.com/video_Dsem42810H4
Ни то, ни другое не помогло мне.
Вот как закончился мой код. Я сократил его, насколько мог.
Начиная со страницы index.php, которая содержит начальную форму входа:
<form role = "form" action = "index.php" method = "post" id = "loginForm" name = "loginForm">
<input type = "text" class = "form-control" id = "username" name = "username"
value = "<?php if (isset($_COOKIE['username'])) echo $_COOKIE['username']; ?>" />
<input type = "password" class = "form-control" id = "password" name = "password"
value = "<?php if (isset($_COOKIE['password'])) echo $_COOKIE['password']; ?>"/>
<button type = "button" id = "loginSubmit" name = "loginSubmit" class = "btn btn-primary btn-block btn-flat">Sign In</button>
<input type = "checkbox" id = "rememberme"
<?php if (isset($_COOKIE['username'])){echo "checked='checked'";} ?> value = "1" />
</form>
Вот код JavaScript, используемый для отправки значений формы:
$('#loginSubmit').on('click', function()
{
var username = $('#username').val();
var password = $('#password').val();
var rememberme = $('#rememberme').val();
// skipping the form validation
$.post('api/checkLogin.php', {username: username, password: password, rememberme:rememberme}, function(data)
{
// the data returned from the processing script
// determines which page the user is sent to
if (data == '0')
{
console.info('Username/Password does not match any records.');
}
if (data == 'reg-user")
{
window.location.href = "Home.php";
}
else
{
window.location.href = "adminHome.php";
}
});
});
Вот сценарий обработки, который называется checkLogin.php. Здесь я пытаюсь установить $ _COOKIE:
<?php
include ("../include/sessions.php");
if (isset($_POST['username']) && isset($_POST['password']))
{
$username = strip_tags(mysqli_real_escape_string($dbc, trim($_POST['username'])));
$password = strip_tags(mysqli_real_escape_string($dbc, trim($_POST['password'])));
$rememberme = $_POST['rememberme'];
$select = "SELECT username, fullname, password FROM users WHERE username = '".$username."'";
$query = mysqli_query($dbc, $select);
$row = mysqli_fetch_array($query);
$dbusername = htmlentities(stripslashes($row['username']));
$dbfullname = htmlentities(stripslashes($row['fullname']));
$dbpassword = htmlentities(stripslashes($row['password']));
if (password_verify($password, $dbpassword))
{
// setting sessions here
$_SESSION['username'] = $username;
$_SESSION['fullname'] = $dbfullname;
// here is where I attempt to set the $_COOKIE
if (isset($remember))
{
setcookie('username', $_POST['username'], time()+60*60*24*365);
setcookie('password', $_POST['password'], time()+60*60*24*365);
}
else
{
setcookie('username', $_POST['username'], false);
setcookie('password', $_POST['password'], false);
}
echo $username; // this gets sent back to the JavaScript
mysqli_free_result($query);
}
else
{
// username/password does not match any records
$out = 0;
echo $out;
}
}
?>
Итак, теперь, когда я попытался установить $ _COOKIE, я могу попытаться распечатать его на домашней странице, например:
<?php echo 'cookie ' . $_COOKIE["username"]; ?>
На что не работает, потому что все, что я вижу, это слово «cookie».
Кроме того, когда я выхожу из системы, я надеюсь увидеть уже заполненную форму входа в систему, что является общей задачей, которую я пытался выполнить, но безуспешно.
Конфиденциальная информация, например пароль. Верный?
Это верно.
Понял. Как насчет того, чтобы установить cookie только для имени пользователя?
ну, ваша форма использует метод GET, но вы передаете массивы POST; это должно было вызвать здесь неопределенный индекс.
Я обновил код.
вы не должны вводить пароли в строку escape().
Я обязательно приму ваши предложения относительно формы и значений, но мне бы очень хотелось, чтобы файлы cookie работали. Буду признателен за любой ваш вклад в отношении файлов cookie. Спасибо.
@FunkFortyNiner - Есть мысли по поводу файлов cookie?
if (data == 'reg-user"), который содержит смешанные кавычки в JS и должен быть как одиночными, так и двойными кавычками. Исправьте это, затем используйте отчет об ошибках php и запустите var_dump() для переменных / файлов cookie и т. д. Насколько я могу судить, остальное мне кажется нормальным. Если это скорее проблема, связанная с JS, я не тот парень. JS и я не получаемся хорошими товарищами по постели, лол!
@FunkFortyNiner - Спасибо за вашу помощь. Я ценю это.
пожалуйста.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Хранение конфиденциальной информации в файлах cookie - не лучшая идея.