簡體   English   中英

PHP停止運行腳本

[英]PHP stops running script

我寫了這個腳本,你去了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注入)。

現在,您通過使用while($row = mysqli_fetch_array($result) or die(mysqli_error($con)))獲取所有結果並循環遍歷它們。 也就是說,如果沒有結果,它將不會遍歷任何對象,因為它無法獲取任何對象。

你應該使用像mysqli_num_rows這樣的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注入的另一個受害者。 永遠不要相信用戶!

問題是你使用if ($usname=$test)而不是if ($usname==$test)

您在if語句中分配一個變量值是錯誤的,您應該使用雙equl coparison運算符來比較它們,只需更改

if ($usname==$test)

另外,為了調試您的查詢,您應該將mysqli_error移動到查詢本身

$result = mysqli_query($con, "SELECT * FROM main WHERE urls='$test'") or die(mysqli_error($con));
while($row = mysqli_fetch_array($result)) {

你的代碼非常容易受到mysql注入的攻擊,在這篇有用的文章中了解更多如何在PHP中防止SQL注入? 你應該使用准備好的聲明來避免任何風險。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM