我知道编程时最好的方法是不禁用错误,自从我开始制作简单的网络论坛以来,我一直遇到一系列错误,我试图获得一些但是我遇到了一些问题,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;
}
?>
答案 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为空或未设置而不抛出警告的情况。