【发布时间】:2018-09-27 12:02:50
【问题描述】:
我正在尝试编写一个 php 页面来检查 $_GET['uuid'] 是否与数据库中的值匹配,以及当前访问者的 IP 地址是否与存储在数据库中的 $_GET['uuid'] 的 IP 地址匹配。
代码如下:
if(isset($_GET['uuid'])){
$uuid = $_GET['uuid'];
include('database.php');
$sql = "SELECT * FROM `ips`";
$sql2 = "SELECT * FROM `ips` WHERE `uuid` = '". $uuid ."'";
foreach($mysqli->query($sql) as $row){
$ipss = $row;
}
foreach($mysqli->query($sql2) as $ipsrrr){
$ipsr = $ipsrrr;
}
if($ipss['uuid'] == $uuid && $ipsr['ip'] == $gip){
$allowed = 1;
}else{
header('Location: index.php');
exit(0);
}
}else{
header('Location: index.php');
exit(0);
}
我不知道为什么,但我陷入了 foreach 循环。我得到一个带有加载图标的空白页面。
【问题讨论】:
-
你不输出任何东西肯定会得到一个空白页
-
$gip在那里未定义。以及在代码脚本顶部添加error_reporting(E_ALL);ini_set('display_errors',1);以获取可能的错误。 -
为什么要进行两次查询,一次获取 all IP 行,一次仅获取
uuid匹配的行(其中似乎更明智)?!其次,您循环遍历结果并分配给$ipss和$ipsr,但是您正在覆盖这些变量并且只有最后一行会粘在那里。这一切都没有多大意义。你应该只做 一个 查询WHERE uuid = $uuid AND ip = $gip,要么得到结果,要么没有。无需在 PHP 中循环任何内容或再次比较某些内容。 -
$gip变量是什么?你曾经平等过吗? -
先抱歉,没有贴出完整代码