0

ここでは初心者モードを覚えておいてください。データベースから商品を検索するeコマースサイトを作っています。私が使用するログインは、データベースの0と1に基づいています。adminとしてログインし、admin.phpページで検索機能を使用すると、ログアウトするか、frontPageにリダイレクトされます。同じ検索機能がfrontPageで正しく機能します。

これは、admin.phpでフォームを送信する部分です。

<div id="mainArea">
    <form id="searchBox" action="<?=$_SERVER['PHP_SELF']?>" method="post"><input id="search" name="title" type="text" placeholder="Search Products" /><input name="submit" type="submit" value="Search" style="width:75px;height:36px"/></form>
</div>
    <div id="show">
        <?php
            include("searchAdmin.php");
        ?> 
    </div>

admin.phpページの上部は次のようになります:

<?php
session_start();
$name = $_SESSION['myusername'];
?>

adminSearch.phpでの検索は次のとおりです。

<?php
if ($_POST['submit']){
include ("connection.php");

$title = (trim($_POST['title'])=="")?
die ("You did not enter any search criteria"):
mysql_real_escape_string($_POST['title']);

$query = "select * from beer where upper(beer_name) like '%".strtoupper($title) ."%' OR upper(beer_descr) like '%". strtoupper($title) ."%' OR upper(beer_categ) like '%". strtoupper($title) ."%'";

if(! ($result = mysql_query($query)))
die ("No matches found. Please search again.</body></html>");
echo "<table border=1>";
while ($rows = mysql_fetch_array($result)) {
    echo "<tr><td rowspan=3>" . '<img src="images/'. $rows['beer_image'] . '.jpg"/>'."</td><td>".$rows['beer_name']."</td><td><a href='updateBeer.php?id=". $rows['beer_id'] ."'>Update</a></td></tr>";
    echo "<tr><td>".$rows['beer_categ']."</td><td><a href='deleteBeer.php?id=". $rows['beer_id'] ."'>Delete</a></td></tr>";
    echo "<tr><td>".$rows['beer_descr']."</td>
    <td>".$rows['beer_cost']."</td></tr>";
}
echo "</table>";
}
else include("showAdmin.php");
?>

編集:ログインの終わりを表示するのを忘れたphpは次のようになります。管理ページに正しく送信されますが、管理ページで検索を実行すると、ログアウトするか、frontPageに送信されます。

    if($count==1){
        if($auth==1){
            session_start();
            $_SESSION['myusername'] = $myusername;
            $_SESSION['auth']=$auth;
            header("location: /admin.php");
            }
        elseif($auth==0){
            session_start();
            $_SESSION['myusername'] = $myusername;
            $_SESSION['auth']=$auth;
            header("location: /user.php");
        }
    }
else {
echo "Wrong Username or Password";
}

同じ管理ページでのログアウトは次のようになります。

<div id="login1">
<font color="white">Logged in with Administrator privilages as: <?php echo $name ?>.</font><br /><form id="logout" method="post" name="logout" action="logout.php"><input name="logout" type="submit" value="Logout" style="width:75px;height:22px"><br />
</div>     

そして、logout.phpは次のようになります。

<?php
if (!empty($_POST['logout'])){
session_start();
session_destroy();
header("location: /frontPage.php");
}
?>
4

2 に答える 2

0

一見すると、問題の一部である可能性のある変数$resultを使用しています。

私が見たところ、$ resultに値を宣言または割り当てていないため、ifステートメントでの比較はおそらく意図したとおりに行われていません。

私の提案は、デバッグの目的でifステートメントを削除してコードを単純化し、同じ問題が発生するかどうかを確認することです。

また、コードをデバッグするためのアラートボックスをいくつか追加して、コードのどの部分がログアウトコードにリダイレクトされているかを特定できるようにします。

于 2013-03-23T15:20:00.000 に答える
0

代わりに

<?=$_SERVER['PHP_SELF']?>

使用する

<?php echo $_SERVER['PHP_SELF']?>

この単純な間違いがエラーの原因だと思います。今回は幸運を祈ります。

于 2014-06-21T15:54:20.187 に答える