2017-02-16 3 views
1

Я сделал/скопировал подходящую и приятную страницу на странице. Я сделал это полностью работоспособным, за исключением одной ошибки, когда имя пользователя и пароль arent в БД все еще перенаправляются? Войти Форма:Страница Inlog, переадресовывает, но не читает код

<div class="login"> 
<h1>Login</h1> 
<form method="post" action="connectivity.php"> 
    <input type="text" name="user" placeholder="Gebruikersnaam" required/> 
    <input type="password" name="pass" placeholder="Wachtwoord" required/> 
      <input id="button" type="submit" class="btn btn-primary btn-block btn-large" name="submit" value="Log-In"> 
     </br> 

И код PHP, где его получение ответов:

<?php 
session_start(); 
$user = $_POST['user']; 
$_SESSION['user'] = $user; 


define('DB_HOST', 'localhost'); 
define('DB_NAME', 'mkuiper1'); 
define('DB_USER','mkuiper1'); 
define('DB_PASSWORD','password'); 


    $con=mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die("Failed to connect to MySQL: " . mysql_error()); 
    $db=mysql_select_db(DB_NAME,$con) or die("Failed to connect to MySQL: " . mysql_error()); 
    /* 
    $ID = $_POST['user']; 
    $Password = $_POST['pass']; 
    */ 

    function SignIn($data){ 

     //checking the 'user' name which is from Sign-In.html, is it empty or have some text 
     if(!empty($data['user'])){ 

      //$query = mysql_query("SELECT * FROM WebsiteUsers where userName = '".$data['user']."' AND pass = '".$data['pass']."'") or die(mysql_error()); 
      // The above query is sql-injecation valnerable query, use the below query instead 
      // Also do not use mysql erxtension anymore is deprecated, use mysqli instead 
      // Let us say that your db connection is stored in $con variable 

      $stmt = $con->prepare("SELECT * FROM WebsiteUsers where userName = '$_POST[user]' AND pass = '$_POST[pass]'"); 
      $stmt->bind_param('ss', $data['user'],$data['pass']); 

      if($stmt->execute()){ 
       $stmt->store_result(); 
       if($stmt->num_rows>0){ 
        $result = $stmt->get_result(); 
        while ($row = $result->fetch_assoc()) { 
         $_SESSION['userName'] = $row['pass']; 
         //echo "Login Succesvol!"; do not echo anything here before redirecting !!! 
         $_SESSION['loggedin'] = 1; 
         header("Location: index.php"); 
        } 
       } 
      } 
     } else{ 
      $message = "Verkeerde Gebruikersnaam/Wachtwoord!"; 
      echo ("<SCRIPT LANGUAGE='JavaScript'> 
      window.alert('$message') 
      window.location = '/Sign-In.php'; 
      </SCRIPT>"); 
     } 
    } 

    if(isset($_POST['submit'])){ 
     SignIn($_POST); 
    } 



    ?> 

Но это все еще продолжается и остается на connectivty.php, даже когда передача и имя пользователя неверны.

Извините за плохой английский

Джесси

+0

пожалуйста, дайте мне понять, ваш сценарий, если имя пользователя пустое: перейти на страницу входа, иначе если его не пусто: попробуйте найти имя пользователя в db, если найдено: создать новый сеанс и перенаправить на index.php, правильно? – Mohammad

+0

Да, но похоже, что когда он его не найдет, он останется на странице регистрации. –

+0

, потому что ваши операторы if не очень вложены, также вы проверяете, является ли имя пользователя пустым как преемник условия, оно должно быть 'if (! Empty (...))', я опубликую ответ ниже – Mohammad

ответ

0

Как я сказал в моем комментарии, есть много проблем с вашим кодом, эта функция должна решить их:

function SignIn($data){ 

    //checking the 'user' name which is from Sign-In.html, is it empty or have some text 
    if(!empty($data['user'])){ 

     //$query = mysql_query("SELECT * FROM WebsiteUsers where userName = '".$data['user']."' AND pass = '".$data['pass']."'") or die(mysql_error()); 
     // The above query is sql-injecation valnerable query, use the below query instead 
     // Also do not use mysql erxtension anymore is deprecated, use mysqli instead 
     // Let us say that your db connection is stored in $con variable 

     $stmt = $con->prepare('SELECT * FROM WebsiteUsers where userName = ? AND pass = ?'); 
     $stmt->bind_param('ss', $data['user'],$data['pass']); 

     if($stmt->execute()){ 
      $stmt->store_result(); 
      if($stmt->num_rows>0){ 
       $result = $stmt->get_result(); 
       while ($row = $result->fetch_assoc()) { 
        $_SESSION['userName'] = $row['pass']; 
        //echo "Login Succesvol!"; do not echo anything here before redirecting !!! 
        $_SESSION['loggedin'] = 1; 
        header("Location: index.php"); 
       } 
      } 
     } 
    } else{ 
     $message = "Verkeerde Gebruikersnaam/Wachtwoord!"; 
     echo ("<SCRIPT LANGUAGE='JavaScript'> 
     window.alert('$message') 
     window.location = '/Sign-In.php'; 
     </SCRIPT>"); 
    } 
} 

if(isset($_POST['submit'])){ 
    SignIn($_POST); 
} 
+0

Спасибо для вашего ответа и времени! Мы получаем эти 2 кода ошибок. Примечание: Не определено переменная: жулик в connectivity.php на линии 30 Фатальная ошибка: Вызов функции-члена подготовить() на не-объект в connectivity.php на линии 30 Это странно, потому что мы уже определили $ con ...? Это строка 30: $ stmt = $ con> prepare ("SELECT * FROM WebsiteUsers где userName = '$ _POST [пользователь]' И pass = '$ _POST [pass]'"); –

+0

@JesseVanDopperen, конечно, вы получите эти ошибки, потому что '$ con' не объявлен в вашем коде, прочитал комментарии?! вам нужно объявить '$ con' и назначить ему соединение db. – Mohammad

+0

Мы объявили con, извините, что не упомянули об этом. –

Смежные вопросы