2016-03-13 4 views
1

Мне нужно проверить, установлен ли флажок. Я искал решение и нашел его, но он по-прежнему не работает для меня.

Вот моя форма:

<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.

Помогите пожалуйста?

Спасибо заранее.

+1

что это debug_to_console? –

+0

Это функция, эквивалентная console.log() в javascript. Он просто показывает параметр, указанный в консоли. – codeless

+1

Это не '$ _POST [" loginform "]' проблема. Проблема заключается в 'console.log()'. BTW, вы ** не можете выводить ** в консоли, используя php. Ни в коем случае – fusion3k

ответ

1

$ _POST [ «помнить»] будет истинным или ложным .... удалить значение = 1 ... вы получите значение ... истина или ложь ... проверки в соответствии с этим ...

+0

Я пробовал это, тоже не работал:/На самом деле это было одно из решений, которые я нашел, поэтому я уже пробовал это раньше ... – codeless

+0

Это не имеет значения для вопроса, и оно не меняет поведение кода в любом путь. – fusion3k

+0

Я думаю, что действия отсутствуют, вероятно, будет в таком случае – Karthik

1

Сделать атрибут действия, как

<form method="post" action="" class="form-horizontal" role="form"> 

РНР кода

if (isset($_POST)) { 
    if(isset($_POST['remember'])) { 
    $month = time() + 2592000; 
    debug_to_console($month); // function equivalent to console.log in JS 
    setcookie('remember_me', $_POST['username'], $month); 
    } 
    } 
+0

Пробовал это, все равно не сработает :( – codeless