2016-04-28 53 views
-2

這是什麼?:通過一個學生團隊,我們正在爲一個Web應用程序創建一個網站,您需要登錄才能繼續所需的頁面。PHP/Msqli - Var突然未定義?

本文件的目標:使用connection.php與數據庫建立連接。並從HTML表單index.php中檢索數據,其中用戶將其憑據登錄。

設置了變量$username$password後,腳本必須檢查數據庫是否在數據庫中,如果是,則繼續下一頁。

問題:首先,它的工作,我沒有得到這個錯誤,但與代碼試圖改善它,它打破了......玩了之後,現在突然我得到以下PHP錯誤:

Notice: Undefined variable: login_user in C:\xampp\htdocs\PAD-Academy\PHP\login.php on line 34

我曾嘗試聲明該var,但沒有工作,我想我做了某事..某處..錯了,但我找不到它。在堆棧也有類似的帖子,我試圖用的是幫助解決它,但沒有工作了...

這是我下面的代碼: 文件名:login.php

<?php 

session_start(); 
include("connection.php"); //Includes the connection file to get to the DB credentials. 

$error = "" ; //Empty var to store errors. 


if(isset($_POST["username"])){ 
    if(empty($_POST["username"]) || empty($_POST["password"])){ 
    header("location: ../index.php"); 

    } else { 
    //Define var and inserts the data from the index.php form. 
    $username=$_POST['username']; 
    $password=$_POST['password']; 

    //protection agianst MYSQL injection (in adress link) 
    $username = stripslashes($username); //stripslashes deletes/
    $password = stripslashes($password); 
    $username = mysqli_real_escape_string($db, $username); //escape string deletes strings. 
    $password = mysqli_real_escape_string($db, $password); 
    //$password = md5($password); //For future use when passwords are "encrypted" with md5. 

    //Check username and password from database. 
    $sql="SELECT idaccount FROM pad_db.account WHERE username='$username' AND password='$password';"; 
    $result=mysqli_query($db,$sql); 
    $row=mysqli_fetch_array($result,MYSQLI_ASSOC); 


    //If username and password exist in the database then create a sessoin. 
    //otherwise echo error. 
    if(mysqli_num_rows($result) == 1) { 
     $_SESSION['username'] = $login_user; //Initializing Session 
     //header("location: ../studenthome.html"); //Redirecting To Other page. 
     //Insert rank check before header();. 

    } else { 
     $error = "Username or password incorrect!"; 
     echo $error; 
     //header("location: ../index.php"); 

     //Moet een error komen op login page, dit is even een tijdelijke oplossing. 
    } 
    } 
} 
//DATABASE TABLE: 

// CREATE TABLE IF NOT EXISTS `pad_db`.`account` (
// `idaccount` INT(11) NOT NULL AUTO_INCREMENT COMMENT '', 
// `username` VARCHAR(45) NOT NULL COMMENT '', 
// `password` VARCHAR(45) NOT NULL COMMENT '', 
// `rank` ENUM('TEACHER','STUDENT') NOT NULL COMMENT '', 
// `fname` VARCHAR(45) NULL DEFAULT NULL COMMENT '', 
// `mname` VARCHAR(45) NULL DEFAULT NULL COMMENT '', 
// `lname` VARCHAR(45) NULL DEFAULT NULL COMMENT '', 
// `email` VARCHAR(45) NULL DEFAULT NULL COMMENT '', 
// PRIMARY KEY (`idaccount`) COMMENT '', 
// UNIQUE INDEX `idaccount_UNIQUE` (`idaccount` ASC) COMMENT '', 
// UNIQUE INDEX `username_UNIQUE` (`username` ASC) COMMENT '', 
// UNIQUE INDEX `email_UNIQUE` (`email` ASC) COMMENT '') 
// ENGINE = InnoDB 
// AUTO_INCREMENT = 5 
// DEFAULT CHARACTER SET = utf8; 



?> 
+0

聲明的變量在哪裏? – aaronofleonard

+0

我試過聲明它,但然後錯誤仍然存​​在.. –

+0

嘗試'$ username'而不是'$ login_user'。 –

回答

1

這裏問題:

if(mysqli_num_rows($result) == 1) { 
    $_SESSION['username'] = $login_user; //Initializing Session 
    //header("location: ../studenthome.html"); //Redirecting To Other page. 
    //Insert rank check before header();. 
} 

您已經使用$login_user但你沒有指定什麼$ login_user,這就是爲什麼你必須NOTICE未定義$login_user

你應該把$login_user=$row['your_column_name_there']

這應該解決您的問題。 乾杯

+0

謝謝!,它的工作! –

相關問題