2016-04-28 8 views
-2

それは何ですか?学生のチームでは、必要なページに進むためにログインする必要のあるWebアプリケーションのWebサイトを作成しています。PHP/Msqli - Varは突然定義されていませんか?

このファイルの目的:connection.phpを使用してデータベースとの接続を確立します。そして、ユーザーがログインするために彼の資格情報を置くHTMLフォームindex.phpからデータを検索する。

vars $username$passwordが設定された後、スクリプトはデータベースに資格情報があるかどうかを確認する必要があります。もしそうなら、次のページに進みます。

問題:

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

:最初に、今私は、次の PHPエラーが出る...それが働いたと私はこのエラーを取得できませんでしたが、突然それを改善しようとしているコードで遊んでた後、それが壊れます

私は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

'$ login_user'の代わりに' $ username'を試してください。 –

答えて

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を使用しているが、あなたは未定義ためNOTICEを持っている理由です、$のLOGIN_USERには何も割り当てられていません。

おそらく$login_user=$row['your_column_name_there']を入れてください。

これで問題が解決するはずです。 乾杯。

+0

ありがとうございました! –

関連する問題