2012-12-05 74 views
0

我知道编程时最好的方法是不要禁用错误,自从我开始制作我的简单网络论坛以来,我一直在收到一系列的错误,我试图得到一些,但我骑时遇到的一些问题,在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

你是否在某处定义了$ act?它是什么 ? –

+0

请显示一些更多的代码 –

+0

检查http://stackoverflow.com/questions/4261133/php-notice-undefined-variable-and-notice-undefined-index –

回答

1

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

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

case声明不使用分号

case "whatever": 
      ^
+0

其工作感谢我忘了定义$ act变量感谢+1对于答案 – theuserkaps

1

添加这对你的代码的顶部:

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

这可能是即使你把所有的像session_start();$act = ...这些全球性的东西都变成一个叫gloabls.inc.php例如文件更好,那么包括进入其他页面。

+0

感谢+1对于答案 – theuserkaps

1

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

你可以在你的switch语句中加入条件处理这个问题:

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

这样,您就可以使用其他条件来处理案件,其中$行为是空的或不设置不抛出警告。

+0

感谢+1为答案 – theuserkaps

相关问题