什么是真正导致这个未定义的变量

时间:2012-12-05 08:03:50

标签: php

我知道编程时最好的方法是不禁用错误,自从我开始制作简单的网络论坛以来,我一直遇到一系列错误,我试图获得一些但是我遇到了一些问题,undefined variable是最常见的错误,似乎我必须声明一些像A='';然后A=values;,但我不知道如何处理下面的这个

Notice: Undefined variable: act in C:\xampp\htdocs\mysite\forum part two\login.php on line 74

第74行的代码就是这个

case "login";

以及login

中有login.php的其他代码
switch($act){

default;
index();
break;

case "login";
login();
break;

}

login.php上的代码就是这个

<?php
session_start();
//This displays your login form
function index(){
echo "<form action='?act=login' method='post'>" 
    ."Username: <input type='text' name='username' size='30'><br>"
    ."Password: <input type='password' name='password' size='30'><br>"
    ."<input type='submit' value='Login'>"
    ."</form>";    
}
//This function will find and checks if your data is correct
function login(){
//Collect your info from login form
$username = $_REQUEST['username'];
$password = $_REQUEST['password'];
//Connecting to database
$connect = mysql_connect("localhost", "root", "nokiae71");
if(!$connect){
die(mysql_error());
}
//Selecting database
$select_db = mysql_select_db("forumStructure", $connect);
if(!$select_db){
die(mysql_error());
}
//Find if entered data is correct
$result = mysql_query("SELECT * FROM users WHERE username='$username' AND password='$password'");
$row = mysql_fetch_array($result);
$id = $row['id'];
$select_user = mysql_query("SELECT * FROM users WHERE id='$id'");
$row2 = mysql_fetch_array($select_user);
$user = $row2['username'];

if($username != $user){
die("Username is wrong!");
}
$pass_check = mysql_query("SELECT * FROM users WHERE username='$username' AND id='$id'");
$row3 = mysql_fetch_array($pass_check);
$email = $row3['email'];
$select_pass = mysql_query("SELECT * FROM users WHERE username='$username' AND id='$id' AND email='$email'");
$row4 = mysql_fetch_array($select_pass);
$real_password = $row4['password'];
if($password != $real_password){
die("Your password is wrong!");
}
//Now if everything is correct let's finish his/her/its login
session_register("username", $username);
session_register("password", $password);
echo "Welcome, ".$username." please continue on our <a href=index.php>Index</a>";
}

switch($act){
default;
index();
break;
case "login";
login();
break;
}
?> 

3 个答案:

答案 0 :(得分:1)

可能你没有定义$act变量..

$act = isset($_GET['act']) ? $_GET['act'] : '';

并且在case语句中不使用分号

case "whatever":
               ^

答案 1 :(得分:1)

在代码之上添加:

$act = !empty($_REQUEST['act']) ? $_REQUEST['act'] : null;

即使您将所有这些全局内容(例如session_start();$act = ...)全部放入名为gloabls.inc.php的文件中,然后将其包含在其他页面中,也可能会更好。< / p>

答案 2 :(得分:1)

这很可能意味着您没有声明变量$ act。

您可以通过在switch语句周围添加条件来处理此问题:

if (isset($act)) {
    switch($act) {
        // Do what you need here
    }
}
else {
    echo '$act is not set';
}

这样,您可以使用其他条件来处理$ act为空或未设置而不抛出警告的情况。

相关问题