0

プログラミングでエラーを無効にしないことが最善の方法であることはわかっています。単純な Web フォーラムを作成し始めて以来、一連のエラーが発生しています。いくつかのエラーに対処しようとしましたが、いくつかの問題が発生してい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";

そして、これがある私の他のコードloginlogin.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;
}
?> 
4

3 に答える 3

1

これはおそらく、変数$actを宣言しなかったことを意味します。

これを処理するには、switchステートメントの前後に条件を追加します。

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

このように、else条件を使用して、$ actが空であるか、警告をスローせずに設定されていない場合を処理できます。

于 2012-12-05T08:17:04.660 に答える
1

$actおそらく変数を定義していません..

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

およびcaseステートメントではセミコロンを使用しないでください

case "whatever":
               ^
于 2012-12-05T08:11:57.517 に答える
1

これをコードの上に追加します。

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

session_start();などのグローバルなものをすべて、たとえば、$act = ...という名前のファイルに入れ、それを他のページに含めても良いかもしれません。gloabls.inc.php

于 2012-12-05T08:13:49.250 に答える