0

尝试在 php 上验证用户登录。即使我使用正确的信息,我也会被发送到“index2.php”。知道我应该如何调试这个或我需要做什么吗?谢谢

**我还将查询更改为 SELECT COUNT(ID) FROM CUSTOMER

并将 if 语句设置为 "if ($result>1) {"

但仍然被发送到'index2.php'

<?php

// ----------------------
// Retrieve login information

   include("db_info.php");

// ----------------------
// Connect to database

$conn = oci_connect($db_user, $db_pwd, '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(Host=*****.edu)(Port=1521)))(CONNECT_DATA=(SID=asuka)))');

if (!$conn) {
 $e = oci_error();
 print_r($e);
 exit();
}

// ----------------------
// Authenticate User

// Create query
$sql = "SELECT COUNT(ID) FROM CUSTOMER WHERE EMAIL='$email' AND PASSWORD='$password'";

// Create database query statement
$statement_id = oci_parse($conn, $sql);

// Execute query statement
$result = oci_execute($statement_id, OCI_COMMIT_ON_SUCCESS);

// Check for successful authentication
if ($result==1) {
    if ($email=="admin@hotmail.com") {
        $db_login_status = 2;
        header("location: index1.php");
    } else {
        $db_login_status = 1;
        header("location: index.php");
    }
} else {
    header("location: index2.php");
}

// ----------------------
// Close connections

oci_free_statement($statement_id);
oci_close($conn);
4

1 回答 1

0

这里有几个问题。一方面,我们有if ($email="admin@hotmail.com")。那应该 a) 是 == b) 后面有花括号。另一个问题是您无法在更改 http 位置标头之前输出文本,因此您应该摆脱 echo 语句。第三个问题是您在进行管理员检查以转发到 index1.php 之前重定向到 index.php。

于 2012-04-29T20:38:44.983 回答