erreur php sur localhost: Accès interdit! erreur 403
Je suis cette php tutoriel sur windows7 en utilisant XAMPP.
C'est un livre d'or tutoriel qui enregistre les entrées utilisateur dans mysql & affiche les entrées de db.
quand je rentre des données dans le formulaire & de le soumettre, le navigateur affiche cette erreur msg
Accès interdit!
Vous n'avez pas la permission d'accéder à l'objet demandé. Il est lire soit protégé ou non lisible par le serveur.
Si vous pensez que c'est une erreur du serveur, veuillez contacter le webmaster.
Erreur 403
localhost
Apache/2.4.3 (Win32) OpenSSL/1.0.1 c PHP/5.4.7
Mis à JOUR
guestbok.php
Connecter à la DB Code
<?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());
?>
Variables d'initialisation
<?php
//initiate some vars
$gb_str = "";
//$gb_str is the string we'll append entries to
$pgeTitle = "View and Sign Guestbook";
Post traitement de la demande
//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>";
*/
}
?>
Livre d'or de la liste
<?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\">";
}}
?>
La Page 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_xxx()
fonctions. Ils sont considérés comme obsolète et l'insécurité de l'. Le manuel PHP recommande fortement de commutation pour le mysqli_xx()
des fonctions ou des la librairie PDO.2. N'UTILISEZ PAS le "style court balises PHP": c'est à dire
<?
. Vous devriez toujours utiliser le plus de style des balises PHP: <?php
. La version courte est considérée comme obsolète et n'est pas pris en charge par du PHP installations. Il peut être obsolète et/ou supprimés à partir de PHP entièrement dans l'avenir.3. NE PAS UTILISER
$HTTP_POST_VARS
. C'est obsolète en PHP, et a été pendant une longue période de temps. Vous devez utiliser $_POST
à la place.4. Vous n'êtes pas échapper à la saisie de données dans votre requête SQL. Cela vous laisse grande ouverte à une injection SQL hack. C'est extrêmement précaire.
Dans l'ensemble, je recommande fortement d'arrêter avec ce tutoriel, et d'aller trouver un plus up-to-date de tutoriel qui n'enseigne pas une mauvaise pratique. Je voudrais suggérer quelques articles ici: phpmaster.com
OriginalL'auteur enterprize | 2012-10-10
Vous devez vous connecter pour publier un commentaire.
2e répondre à des questions, vous n'avez pas attribué de résultat de la requête et variables
mysql_affected_rows
est également vide.J'ai fait un nouveau fichier de même de mettre en œuvre les suggestions de ce post & inscriptions sont maintenant affichées, mais je ne peut pas insérer des valeurs encore. Même erreur
OriginalL'auteur Yogesh Suthar
On dirait que l'erreur est provoquée par la configuration Xampp blocage de l'annuaire. Si vous êtes sur une machine de développement et ne se soucient pas de la sécurité, recherchez un fichier appelé httpd.conf de apache/conf dir sous xampp.
Vous trouverez une directive de là similaire à ce
Le remplacer par cette
Qui fait de chaque fichier sur la racine de votre disque accessible au serveur, qui sur une machine de développement est très bien (même si certains sont liés à discuter sur ce point), mais la production n'est pas une bonne idée.
OriginalL'auteur bumperbox