我正在寻找一种方法来刷新页面时停止在数据库中插入或发送数据.
这是我的代码:
user_details_page.php
<form action="confirm_page.php" method="post" >
User Name:
<input type="text" name="username" >
User Email
<input type="text" name="useremail" >
Password:
<input type="text" name="password" >
<input type="submit" name="submit" >
</form>
Run Code Online (Sandbox Code Playgroud)
confirm_page.php
if (isset($_POST['submit']))
{
$user= $_POST['username'];
$email = $_POST['useremail'];
$pass= $_POST['password'];
mysql_query("INSERT INTO table (username, useremail, email) VALUES ('$username','$useremail','$email');
}
Run Code Online (Sandbox Code Playgroud)
所以问题每次我刷新确认page.php时数据都会被发送到数据库.怎么阻止这个?
我试图在成功执行后重定向页面.但是,我想在重定向完成时向用户显示一条消息(例如"Changed made.Redirecting ...").header在页面输出后更改变量会导致PHP出错,我知道这一点.我的问题是,我该怎么做?
我目前的代码是这样的
// ... execution code
echo 'Changes made successfully. Now redirecting...';
header('Location: index.php');
Run Code Online (Sandbox Code Playgroud)
这不起作用.我也看到了SO的答案,建议我分别使用ob_start()和ob_flush()在页面的开头和结尾.但这也没有解决我的问题,我仍然得到错误.
NB我只需要使用PHP,我不希望JavaScript用于重定向.
编辑:我最终使用JavaScript进行重定向,因为我需要在重定向之前向用户输出一些有用的消息,而单独使用PHP并不是最好的解决方案.
我有一个在 php 上运行的网站,当用户登录、发表评论或发帖时,我必须重定向用户。我正在尝试尽可能减少重定向时间,并将用户重定向到另一个页面,我目前使用:
echo "<script>location.href='www.redirect.url'</script>";
Run Code Online (Sandbox Code Playgroud)
我是使用 PHP 重定向用户的新手,这是我所知道的最快的方法,有更快的方法吗?如果是的话,那是什么?
每次需要重定向到另一个URL时,调用太多重复工作header()然后[?].这就是为什么你可能有一个如下所示的函数/方法:die()
function redirect($url, $http_response_code = 302)
{
header("Location: ".$url, true, $http_response_code);
die;
}
Run Code Online (Sandbox Code Playgroud)
这个方法在你的项目/框架中存在于哪里?
它不适合任何类别.无论我把它放在哪里,都感觉不对.笨(Kohana的和)把内部url辅助类,但再次,它感觉不对(用类似的方法一起site_url()和base_url()).
我的网站网址是www.testing.com,还有另一个网站www.testing.com/newsite.
我希望每个人www.testing.com/newsite都能被重定向到www.newsite.com
我正在使用一个被调用的函数headerLocation()来正确地重定向.这是函数的相关部分,我用它来重定向然后显示适当的消息(个人偏好).
function headerLocation($location,$message)
{
$_SESSION['output'] = $message;
header("Location: ". $location);
}
Run Code Online (Sandbox Code Playgroud)
问题是,当我运行脚本时,header("Location: ". $location);部件被激活,甚至没有调用该函数(当我最初需要它进行php解析时).这使得该功能无用.
有没有办法解决?
有没有办法在我的PHP中进行重定向,这是一个if语句.那么..只有重定向,如果这样的条件是真的吗?另外,我可以通过该URL传递变量以获取GET请求吗?
我是.htaccess重写的新手,我正在尝试创建动态重写URL的规则.
例如,假设用户输入以下URL:
http://example.com/xxx/?user=2002
Run Code Online (Sandbox Code Playgroud)
它将被重写为:
http://example.com/xxx/user/2002/
Run Code Online (Sandbox Code Playgroud)
如果用户传递多个这样的参数:
http://example.com/xxx/?user=2002&activity=100&result=true
Run Code Online (Sandbox Code Playgroud)
它应该成为:
http://example.com/xxx/user/2002/activity/100/result/
Run Code Online (Sandbox Code Playgroud)
注意:将动态生成所有查询字符串.
这就是我想出的:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /news/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /news/index.php [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
更新
我试着让上面的代码和查询字符串重写代码一起工作.修改后的.htaccess如下所示:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /news/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /news/index.php [L]
# first take out query string from your /xxx/ URLs
RewriteCond %{QUERY_STRING} ^.+$
RewriteRule ^news/?$ %{REQUEST_URI}/%{QUERY_STRING}? [L]
# now convert & to /
RewriteRule ^([^&]+)&(.*)$ $1/$2 …Run Code Online (Sandbox Code Playgroud) 可能重复:如何在PHP中进行重定向?
嗨!我如何以最佳方式转发页面?我应该使用标题功能吗?或者我应该使用HTML(元标记)来刷新?我希望有些专家可以在这一点上给我一些建议.谢谢!
顺便说一句,转发是在if语句中进行的,如果这可能是某些问题?
我有登录页面,登录后我有用户信息相关页面。所以我不想从 url 直接访问这些页面。而不是它会重定向到登录页面。我怎样才能做到这一点。
我的sessions.php页面代码
<?php
if(!isset($_SESSION))
{
session_start();
}
$login_session=$_SESSION['email'];
?>
Run Code Online (Sandbox Code Playgroud) php ×10
redirect ×4
.htaccess ×2
header ×2
architecture ×1
database ×1
forward ×1
javascript ×1
load ×1
mod-rewrite ×1
mysql ×1
output ×1
refresh ×1