我是PHP新手,因此這可能是一個簡單的答案。我希望我的格式正確和正確的SO標準(仍然是新的網站。)
我正在處理兩套非常類似的代碼提交表單數據和使用htmlspecialchars停止XSS攻擊在我非常基本的開始PHP書通過SitePoint。很簡單,對。
當使用代碼設置1,我有一次我改變了形式的行動從
<form action="formpost.php" method="post">
到
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
我搜索SO,發現我需要檢查了未定義指數的錯誤如果$_REQUEST
爲空或者不是爲了沒有未定義的索引並且擺脫那個錯誤。如果有人能夠向我解釋這一部分,我會非常感激。確實需要的東西是什麼周長回落下,以念Wo成爲Index?
thiking,請不要取笑我了,我知道我可能聽起來很蠢 - >它是一個 Index
因爲$_REQUEST
是一個$_POST
,$_GET
和$_COOKIE
是一個數組,數組內的數據是indexed,
0,1,2,3,etc
。?
我理解,因爲沒有$_REQUEST
已取得$_REQUEST
可能是可能是空的(我想是不是?),但是,是沒有劇本已經通過將數據輸入到表格激活,爲什麼會被預期的數據已經在$_REQUEST
?
代碼集1(thows錯誤[未定義指數]除非腳本檢查$_REQUEST
爲空): 在這段代碼中,我只是讓最終用戶通過表單字段或通過張貼他們的名字一個字符串手動添加到URL並打印。
<?php
if(!empty($_REQUEST))
{
$firstname = $_REQUEST['firstname'];
$lastname = $_REQUEST['lastname'];
echo 'Welcome to our web site, ' .
htmlspecialchars($firstname, ENT_QUOTES, 'utf-8') . ' ' .
htmlspecialchars($lastname, ENT_QUOTES, 'utf-8') . '!';
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Query String Link Example</title>
</head>
<body>
<p>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<div><label for="firstname">First name:
<input type="text" name="firstname" id="firstname"></label>
</div>
<div><label for="lastname">Last name:
<input type="text" name="lastname" id="lastname"></label></div>
<div><input type="submit" value="GO"></div>
</form>
</p>
</body>
</html>
代碼集2(如果$_REQUEST
被選中與否並不介意): 在這段代碼,我做同樣的事情,只是如果它正好是我的確切名稱,有它打印出一條特殊消息。
<?php
$firstname = $_REQUEST['firstname'];
$lastname = $_REQUEST['lastname'];
if ($firstname == 'Tommy' && $lastname='Loza')
{
echo 'Welcome to our web site web master!';
}
else
{
echo 'Welcome to our web site, ' .
htmlspecialchars($firstname, ENT_QUOTES, 'utf-8') . ' ' .
htmlspecialchars($lastname, ENT_QUOTES, 'utf-8') . '!';
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Conditional Query String Link Example</title>
</head>
<body>
<p>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<div><label for="firstname">First name:
<input type="text" name="firstname" id="firstname"></label>
</div>
<div><label for="lastname">Last name:
<input type="text" name="lastname" id="lastname"></label></div>
<div><input type="submit" value="GO"></div>
</form>
</p>
</body>
</html>
希望我沒有問太多愚蠢的問題和這個職位格式正確無誤。非常感謝SO社區。
湯米
我覺得我在這裏#failed一點點。我的小Q在開始之後的主要問題是,爲什麼代碼集1需要檢查$ _REQUEST爲空而代碼集2沒有?一些如何添加條件語句改變了事情。 – tommydevs
爲了防止XSS攻擊,應該是'<?php echo $ _SERVER ['PHP_SELF']; ?>'this'<?php echo htmlspecialchars($ _ SERVER ['PHP_SELF']); ?> – Pushkar
我認爲你的問題爲什麼一切順利,但在第一個問題中,首先出現一些錯誤,然後當你在表單中放入某些東西並點擊按鈕時沒有錯。我對嗎? –