0

我需要使用表单值将一个页面重定向到另一个页面。

我有这个代码,我认为这对于第一页来说很好,我应该在我想显示数据的另一页中放什么?

<meta http-equiv='refresh' content='0;url=http://site.com/page.php'>


<form action="http://site.com/page.php" method="post" name="myform">

<input type="hidden" name="url" value="<?php echo $url; ?>">

<script language="JavaScript">document.myform.submit();</script>
</form>

问候

4

3 回答 3

1

您不能将元刷新重定向与表单提交本身混合。此外,元刷新无论如何都很糟糕。由于您已经控制了接收页面,并且它使用的是 PHP,因此请使用它来完成重定向。尝试这个:

<form action="http://site.com/page.php" method="post" name="myform">
<input type="submit" value="Go!" />
</form>

然后,在 page.php 中:

<?php
// Act on the input, store it in the database or whatever.  Then do the redirect using an HTTP 302.
header('Location: http://example.com');
?>

如果您需要表单将目的地传递给 page.php,您需要对其进行清理以防止出现很多安全问题。这是一个粗略的轮廓。

<form action="http://site.com/page.php" method="post" name="myform">
<input type="hidden" name="destination" value="http://example.com" />
<input type="submit" value="Go!" />
</form>

然后,在 page.php 中(从答案https://stackoverflow.com/a/5085981/198299复制重新编码):

<?php
$destination = $_POST['destination'];
$url_parsed = parse_url($destination);
$qry_parsed = array();
parse_str($url_parsed['query'], $qry_parsed);
// Check that $destination isn't completely open - read https://www.owasp.org/index.php/Open_redirect
$query = parse_url($destination);
$destination = "{$url_parsed['scheme']}{$url_parsed['host']}{$url_parsed['path']}?" . http_build_query($query);
header('Location: ' . $destination);
?>

我没有仔细检查该代码(只是在浏览器中写了它),但它应该足以作为一个粗略的草图。

于 2013-10-12T03:06:58.073 回答
0

在 site.com/page.php

<script>window.location.href = 'newPage.php';</script>

不过,您必须在 php 标记之外编写它。

于 2013-10-12T03:04:47.133 回答
0

要在 PHP 中重定向页面,请使用:

<?php
header('Location: url/file.php');
?>

刷新到 HTML 中的不同页面,请使用:

<meta http-equiv='refresh' content='0;url=http://url/file.php'>

在内容属性中,0 是等​​待的秒数。

要在 JavaScript 中刷新到不同的页面,请使用:

window.location.href = 'url/file.php';

如果这些都不起作用,请使用 HTML 跟随锚链接

<a href="url/file.php">Click here to go now!</a>



要回答您的问题,可以通过以下几种方式完成:

1)非常糟糕,需要两个文件,超级冗余的
HTML文件:

<form action="http://site.com/page.php" method="post" name="myform">
    <input type="hidden" name="url" value="<?php=$url?>">
</form>
<script type="text/javascript">
    // Submit the form
    document.forms['myform'].submit();
</script>

页面.php:

<?php
    // Catch url's value, and send a header to redirect
    header('Location: '.$_POST['url']);
?>

2)稍微好一点,还是不推荐

<form action="http://site.com/page.php" method="post" name="myform">
    <input type="hidden" name="url" value="<?php=$url?>">
</form>
<script type="text/javascript">
    // Set form's action to that of the input's value
    document.forms['myform'].action = document.forms['myform'].elements['url'].value;
    // Submit the form
    document.forms['myform'].submit();
</script>

3)仍然非常多余,但我们正在变得更好

<form action="http://site.com/page.php" method="post" name="myform">
    <input type="hidden" name="url" value="<?php=$url?>">
</form>
<script type="text/javascript">
    // Simply refresh the page to that of input's value using JS
    window.location.href = document.forms['myform'].elements['url'].value;
</script>

4)好多了,省了很多麻烦,一开始就用JS

<?php
    // Start with a PHP refresh
    $url = 'url/file.php'; // Variable for our URL
    header('Location: '.$url); // Must be done before ANY echo or content output
?>
<!-- fallback to JS refresh -->
<script type="text/javascript">
    // Directly tell JS what url to refresh to, instead of going through the trouble to get it from an input
    window.location.href = "<?php=$url?>";
</script>
<!-- meta refresh fallback, incase of no JS -->
<meta http-equiv="refresh" content="0;url=<?php=$url?>">
<!-- fallback if both fail (very rare), just have the user click an anchor link -->
<div>You will be redirected in a moment, <a href="<?php=$url?>">or you may redirect right away</a>.</div>

.php扩展名保存它,你应该很高兴。

于 2013-10-12T03:42:55.640 回答