Мне нужно проверить, установлен ли флажок. Я искал решение и нашел его, но он по-прежнему не работает для меня.
Вот моя форма:
<form method="post" class="form-horizontal" role="form">
<div class="input-group">
<div class="checkbox">
<label>
<input id="remember" type="checkbox" name="remember" value="1"> Remember me
</label>
</div>
</div>
<div style="margin-top:10px" class="form-group">
<div class="col-sm-12 controls">
<button type="submit" class="btn btn-success" name="loginform">Login</button>
</div>
</div>
</form>
и мой PHP код:
if (isset($_POST["loginform"])) {
if(isset($_POST['remember'])) {
$month = time() + 2592000;
debug_to_console($month); // function equivalent to console.log in JS
setcookie('remember_me', $_POST['username'], $month);
}
}
EDIT, debug_to_console функция():
function debug_to_console($data) {
if (is_array($data))
$output = "<script>console.log('Debug Objects: " . implode(',', $data) . "');</script>";
else
$output = "<script>console.log('Debug Objects: " . $data . "');</script>";
echo $output;
}
EDIT 2 (Всего PHP код):
<?php
session_start();
if(isset($_COOKIE['remember_me']))
$_SESSION['user'] = $_COOKIE['remember_me'];
$success = true;
if (isset($_POST["loginform"])) {
if(isset($_POST['remember'])) {
$month = time() + 2592000;
echo "<h1>Month: $month</h1>";
setcookie('remember_me', $_POST['username'], $month);
}
$password = $_POST['password'];
$email = $_POST['email'];
// Form Validation
if (!$email || !$password || !filter_var($email, FILTER_VALIDATE_EMAIL))
$success = false;
else
{
Db_connect($connection);
$email = stripslashes($email);
$password = stripslashes($password);
$email = mysqli_real_escape_string($connection, $email);
$password = mysqli_real_escape_string($connection, $password);
$query = mysqli_query($connection, "select * from users where email='$email'");
$rows = mysqli_num_rows($query);
if ($rows == 1) {
$row = mysqli_fetch_array($query);
$hashpass = $row['password'];
if (hash_equals($hashpass, crypt($password, $hashpass))) {
$_SESSION['user'] = $row['username'];
header("location: login.php");
}
else
$success = false;
} else
$success = false;
mysqli_close($connection);
}
}
function Db_connect(&$connection){
$connection = mysqli_connect("localhost","root","", "project_web");
if (mysqli_connect_errno())
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
function debug_to_console($data) {
if (is_array($data))
$output = "<script>console.log('Debug Objects: " . implode(',', $data) . "');</script>";
else
$output = "<script>console.log('Debug Objects: " . $data . "');</script>";
echo $output;
}
?>
Когда я представить свою форму с галочкой, и я смотрю на консоли, она пуста, в то время как он должен отображать значение $ в месяц. Это означает, что $ _POST ['remember'] не задан, пока он должен быть установлен из-за формы submit.
Помогите пожалуйста?
Спасибо заранее.
что это debug_to_console? –
Это функция, эквивалентная console.log() в javascript. Он просто показывает параметр, указанный в консоли. – codeless
Это не '$ _POST [" loginform "]' проблема. Проблема заключается в 'console.log()'. BTW, вы ** не можете выводить ** в консоли, используя php. Ни в коем случае – fusion3k