[英]php error on localhost: Access forbidden! error 403
我正在使用XAMPP在windows7上關注這個 php教程。
這是一本留言簿教程,可以將用戶條目保存到mysql中並顯示db中的條目。 當我將數據輸入表格並提交時,瀏覽器顯示此錯誤信息
訪問被禁止! 您無權訪問請求的對象。 它受讀保護或服務器無法讀取。 如果您認為這是服務器錯誤,請與網站管理員聯系。 錯誤403 localhost Apache / 2.4.3(Win32)OpenSSL / 1.0.1c PHP / 5.4.7
更新
guestbok.php
連接到DB代碼
<?php
$dbHost = "localhost";
$dbUser = "root";
$dbPass = "";
$dbDatabase = "myDB";
// Connect to DB
$li = new mysqli('localhost', 'root', '', 'myDB') or
die("Could not connect". mysqli_connect_error());
//mysql_select_db($dbDatabase, $li) or
die ("could not select DB". mysql_error());
?>
變量初始化
<?php
// initiate some vars
$gb_str = "";
// $gb_str is the string we'll append entries to
$pgeTitle = "View and Sign Guestbook";
發布請求處理
// If form is submitted, then insert into DB
if (!empty($_POST["submit"])) {
$name = $_POST["frmName"];
$email = $_POST["frmEmail"];
$comment = $_POST["frmComment"];
$date = Date("Y-m-d h:i:s");
$gb_query = "insert into guestbook
values(0, '$name', '$email', '$comment', '$date')";
// Performs the $sql query on the server to insert the values
if ($li->query($gb_query) === TRUE) {
echo 'users entry saved successfully';
}
else {
echo 'Error: '. $li->error;
}
/*
$sql = mysql_query($gb_query);
$res = mysql_affected_rows($sql);
// See if insert was successful or not
if($res > 0) {
$ret_str="Your guestbook entry was successfully added.";
} else {
$ret_str = "Your guestbook entry was NOT successfully added.";
}
// Append success/failure message
$gb_str .= "<span class=\"ret\">$ret_str</span><BR>";
*/
}
?>
留言簿列表
<?php
$get_query = "select gbName, gbEmail, gbComment,
DATE_FORMAT(gbDateAdded, '%m-%d-%y %H:%i') gbDateAdded
from guestbook";
$result = $li->query($get_query);
$gb_str .= "<hr size=\"1\">";
if ($result->num_rows > 0) {
// output data of each row from $result
while($row = $result->fetch_assoc()) {
$name = $row["gbName"];
$email = $row["gbEmail"];
$comment = $row["gbComment"];
$date = $row["gbDateAdded"];
if(!empty($name)) {
// If name exists and email exists, link name to email
if(!empty($email)) {
$name="by <a href=\"mailto:$email\">$name</a>";
}
// If name does exist and email exists, link email to email
} else if (!empty($email)) {
$name = "by <a href=\"mailto:$email\">$email</a>";
} else {
$name = "";
}
// Append to string we'll print later on
$gb_str .= "<br>$comment<p class=\"small\">
posted on $date $name<hr size=\"1\">";
}}
?>
HTML頁面
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Guestbook</TITLE>
<SCRIPT language="javascript">
<!--
/* This function is pulled from a generic validation file from
some other site (probably developer.netscape.com) and strips out
characters you don't want */
function stripCharsInBag (s, bag) {
var i;
var returnString = "";
// Search through string's characters one by one.
// If character is not in bag, append to returnString.
for (i = 0; i < s.length; i++)
{
// Check that current character isn't whitespace.
var c = s.charAt(i);
if (bag.indexOf(c) == -1) returnString += c;
}
return returnString;
}
// This function just makes sure the comment field is not empty
function valForm(frm) {
badChars = "<[]>{}";
if(frm.frmComment.value == "") {
alert("Please fill in your comments for the guestbook.");
return false;
} else {
frm.frmComment.value = stripCharsInBag(frm.frmComment.value, badChars);
// These values may be empty, but strip chars in case they're not
frm.frmName.value = stripCharsInBag(frm.frmName.value, badChars);
frm.frmEmail.value = stripCharsInBag(frm.frmEmail.value, badChars);
return true;
}
}
-->
</SCRIPT>
</HEAD>
<BODY bgcolor="#FFFFFF">
<?php echo $gb_str; ?>
<form name="gb" action="<? echo $PHP_SELF;?>" method="post">
<table cellpadding="3" cellspacing="0" border="0">
<tr>
<td class="tdhead" valign="top" align="right">Name</td>
<td valign="top">
<input type="text" name="frmName" value="" size="30"
maxlength="50">
</td>
</tr>
<tr>
<td class="tdhead" valign="top" align="right">Email</td>
<td valign="top">
<input type="text" name="frmEmail" value="" size="30"
maxlength="100">
</td>
</tr>
<tr>
<td class="tdhead" valign="top" align="right">Comment</td>
<td valign="top">
<textarea name="frmComment" rows="5" cols="30"></textarea>
</td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="submit" value="submit"
onClick="return valForm(document.gb)">
<input type="reset" name="reset" value="reset">
</td>
</tr>
</table>
</form>
</BODY>
</HTML>
<?php
// Close MySQL Connection
$li->close();
?>
第二個問題回答,你沒有將查詢結果分配給變量, mysql_affected_rows
也是空的。
$gb_query = "insert into guestbook
values(0, '$name', '$email', '$comment', '$date')";
$sql = mysql_query($gb_query);
$res = mysql_affected_rows($sql);
聽起來這個錯誤是由阻塞目錄的Xampp配置引起的。 如果您在開發計算機上並且不關心安全性,請在xampp下的apache / conf目錄中查找名為httpd.conf的文件。
你會在那里找到類似的指令
<Directory />
Options FollowSymLinks
AllowOverride none
Order deny,allow
Allow from none
Deny from all
</Directory>
用它替換它
<Directory />
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
Deny from none
</Directory>
這使得根驅動器上的每個文件都可以被Web服務器訪問,這在開發機器上是可以的(盡管有些人肯定會爭論這一點),但在生產中根本不是一個好主意。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.