1

ここでパニック!私の学位論文の Web サイトはオンラインでは正常に動作しますが、提出の 1 時間前に、ローカル ホストでは動作しないことがわかりました.2、3 ページで、未定義のインデックスまたは変数が表示され続けます。誰でも助けることができますか?以下はエラーの一部です: Notice: Undefined index: tables in C:\Users..\Desktop\USBWebserver v8_en\root\SnysbArchive\Search.php on line 76

<?php
include 'UserFunction.php';
..html omitted..
//write connect function in here
include('Connect.php'); //Connects to database
$sql = "SHOW TABLES FROM $dbname";
$result = mysql_query($sql);

if (!$result) 
{
    echo "DB Error, could not list tables\n";
    echo 'MySQL Error: ' . mysql_error();
    exit;
}
if (mysql_select_db($dbname, $conn))
{
?>
    <form method="post" action="SearchResults.php?go" id="searchform">
    In <select name="tables">
    <?php
    while ($row = mysql_fetch_row($result)) 
    {
    if ($row[0] != 'user_details' && $row[0] != 'request') 
    {
        echo '<option value="'.$row[0].'">'.$row[0].'</option>';
    }
    }
}
    ?>
    </select>
        Seach for: <input type="text" name="name"> 
    <input type="submit" name="submit" value="Search" />
</form>

<br>
<?php
$tbl=$_POST['tables'];
echo $tbl;
?>

この行は気に入らない $tbl=$_POST['tables']; ありがとう

4

2 に答える 2

4

ローカル サーバーのエラー レポートは、運用サーバーよりも高く設定されています。これにより、運用サーバーでは得られない通知などの「より少ない」エラーのエラー メッセージが表示されます。運用サーバーにエラー メッセージが表示されないようにすることは良いことです。これはハッカーにとって役立つ可能性があります。また、ローカル サーバーは、実行にアプリケーションを適切に構築できるように、大小の間違いをすべて通知する必要があります。

あなたの場合$_POST['tables']は設定されておらず、ローカルサーバーによって報告されています。運用サーバーでもキャッチされていますが、エラー報告の設定のために通知されていません (おそらくエラー ログを除く)。

アップデート

エラーを修正するには、変数に割り当てる前にその値が存在するかどうかを確認します。

$tbl = (isset($_POST['tables'])) ? $_POST['tables'] : ''; 
于 2012-05-22T13:34:29.073 に答える
3

あなたはいつも置くことができます

error_reporting(E_ALL ^ E_NOTICE);

これにより、ページの上部で、参照されているがまだ存在しない変数について PHP が文句を言うのを防ぐことができます。

@john condeが提案したことを実行することをお勧めします。私の提案はエラーを取り除きますが、ずさんなコーディングを可能にします。ずさんなコードは最高ではありません..

于 2012-05-22T13:47:59.910 に答える