我有一个“添加到收藏夹”按钮,一旦点击,就应该存储发送收藏夹请求的人员以及发送给谁的详细信息(在数据库中)。
但是,使用所有功能代码(我希望它可以工作),当我点击“添加到收藏夹”按钮时,我收到消息:
Not Found
The requested URL /www/profile.php was not found on this server.
profile.php
效果很好,但单击按钮时会出现错误。此外,单击该按钮时,网址会显示http://localhost/Freddy
(Freddy是用户登录的用户名)。这让我相信$user_u_var
的实现(见下面的代码) - 但我无法理解它。
按钮:
<form action="<?php echo $username; ?>" method="post">
<input type="submit" class="send_message" name="sendmsg" value="Send Message"/>
<input type="submit" class="add_to_fav" name="addfriend" value="Add to Favourites"/>
/form>
按钮点击时执行的代码:
<?php
// code to process a favourite request
if (isset($_POST['addfriend'])){ // vars
$fav_request = $_POST['addfriend'];
$request_sent_to = $user_u_var;
$request_sent_from = $username;
if ($request_sent_to == $user_u_var){
echo "cannot send request to self";
}
} else {
//do nothing
}
?>
$ user_u_var的来源
if (isset($_GET['u'])) {
$user_u_var = mysqli_real_escape_string($connect,$_GET['u']);
if (ctype_alnum($user_u_var)) { //check if the user exists
$check = mysqli_query($connect, "SELECT username, first_name FROM users WHERE username='$user_u_var'");
if (mysqli_num_rows($check)===1) {
$get = mysqli_fetch_assoc($check);
$user_u_var = $get['username'];
$fname = $get['first_name'];
} else { // refresh page
// if the user doesnt exist i.e. ?u=fakeUser - it will redirect them to the index page.
echo "<meta http-equiv=\"refresh\" content=\"0; url=http://localhost/index.php\">";
exit();
}
}
}
&GT;
当然,当我尝试向自己发送一个最喜欢的请求时,它应该回显cannot send request to self
但它只是呈现错误。
$ username(会话变量)的来源:
<?php
session_start();
if (!isset ($_SESSION["user_login"])){
header("Location:index.php");
} else {
$username = $_SESSION["user_login"];
}
?>
我还添加了一个.HTACCESS文件,以使网页看起来更好,我可能会对此错误做出贡献。
.HTACCESS
RewriteBase /www/
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ profile.php?u=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ profile.php?u=$1
即。假设我在索引页面上:localhost/index.php
。我想直接转到Alice的个人资料页面,所以不用写localhost/index.php?u=Alice
,而是使用RewriteRule,我可以简单地写localhost/index.php/Alice
。
问题: 单击“添加到收藏夹”按钮后,为什么会被重定向到“未找到”页面?