gpt4 book ai didi

PHP 停止运行脚本

转载 作者:行者123 更新时间:2023-11-29 08:30:24 25 4
gpt4 key购买 nike

我编写了这个脚本,您可以在其中访问 localhost/censor.php/query 并查看它是否被采用。这是代码:

<?php
function curPageURL() {
$pageURL = 'http';
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80")
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
else
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];

return $pageURL;
}

$test = curPageURL();
$test = str_replace('http://localhost/censor.php/',"",$test);

$con = mysqli_connect("localhost","root","creepers2","spider");

if (mysqli_connect_errno())
echo "Failed to connect to MySQL: " . mysqli_connect_error();

$usname = null;
$result = mysqli_query($con, "SELECT * FROM main WHERE urls='$test'");
while($row = mysqli_fetch_array($result) or die(mysqli_error($con))) {
$usname = $row['urls'];
if ($usname=$test)
echo "Taken!";
else
echo"YEAH!";
}

mysqli_close($con);
?>

如果您访问 localhost/censor.php/queryinthedatabase,它会打印出来。但是,如果您访问 localhost/censor.php/querynotinthedatabase,它不会打印任何内容。请帮忙?

最佳答案

您正在执行一个简单的查询:SELECT * FROM main WHERE urls='$test'。没关系(除了 SQL 注入(inject))。

现在,您将使用 while($row = mysqli_fetch_array($result) or die(mysqli_error($con))) 获取所有结果并循环访问它们。也就是说,如果没有结果,它不会循环任何对象,因为它无法获取任何对象。

您应该使用类似mysqli_num_rows的内容。例如:

$result = mysqli_query($con, "SELECT * FROM main WHERE urls='" . mysqli_real_escape_string($test) . "'");
if (mysqli_num_rows($result) == 1) {
echo "Taken!";
}
else {
echo "YEAH!";
}

现在您正在执行相同的查询(选择 urls 等于 $test 的所有行),但不是循环返回的行,而是计算查询返回的行数。如果它等于1,则被采用。

此外,请转义您在查询中输入的任何用户输入;不要成为 SQL 注入(inject)的又一个受害者。 永远不要相信用户!

关于PHP 停止运行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16781752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com