可以在php脚本中操作$\u POST变量并在另一个php脚本中表达它吗?

可以在php脚本中操作$\u POST变量并在另一个php脚本中表达它吗?,php,Php,我一直在尝试不使用url进行表单验证。所以我想我应该在表单中创建一个隐藏字段,并将其发送到我的验证php脚本。我希望我能做的是将表单中存在的错误设置到这个隐藏字段并返回它。然而,一旦我离开这个范围,它就会破坏我设置的任何东西。我以为$\u POST有全球范围?也许我声明我把隐藏字段设置错了?我把代码放在下面 <?php include_once $_SERVER['DOCUMENT_ROOT'].'/poles/config/databaseConnect.php'; in

我一直在尝试不使用url进行表单验证。所以我想我应该在表单中创建一个隐藏字段,并将其发送到我的验证php脚本。我希望我能做的是将表单中存在的错误设置到这个隐藏字段并返回它。然而,一旦我离开这个范围,它就会破坏我设置的任何东西。我以为$\u POST有全球范围?也许我声明我把隐藏字段设置错了?我把代码放在下面

<?php
    include_once $_SERVER['DOCUMENT_ROOT'].'/poles/config/databaseConnect.php';
    include_once $_SERVER['DOCUMENT_ROOT'].'/poles/config/functions.php';
    include_once $_SERVER['DOCUMENT_ROOT'].'/poles/models/users.php';
    include_once $_SERVER['DOCUMENT_ROOT'].'/poles/models/userDetails.php';

    //get the refering url to be used to redirect
    $refUrl = $_SERVER['HTTP_REFERER'];

    if(isset($_POST['register'])){
        //declare a temp error array
        $tempError;

        //check if the form is empty
        if(empty($_POST['Email'])&&empty($_POST['Email Confirmation'])&&empty($_POST['Password'])&&empty($_POST['Password Confirmation'])
        &&empty($_POST['Stage Name'])&&empty($_POST['Main Club'])){
            $tempError = 'Please fill in the form.';
        }else{
            //set variables
        }

        if(!empty($tempError)){
            //start a session to declare session errors
            $_POST['errors'] = $tempError;
            //redirect back to referring url
            header('Location:'.$refUrl);
            exit();
        }else{
            //log user in and redirect to member home page
        }

    }


$\u POST根据浏览器传递到服务器的数据内容填充。当您发送
位置
标题时,它会导致浏览器加载新页面,但由于该页面没有表单数据,因此不会传递任何内容

如果您需要将数据从一页传递到另一页,那么$\u会话就是一种方法。所需的只是在需要访问的页面顶部有一个
会话\u start()
,您可以像这样存储
$\u POST
数据:

$_SESSION['postdata'] = $_POST;
取回它就变成了

$email = $_SESSION['post']['Email'];
另一种方法是以新表单将数据作为隐藏的
进行回显,但这需要提交一个新表单,我感觉您需要一些无缝的东西


还请注意,$\u服务器['HTTP\u REFERER']不保证准确,甚至不存在。生产代码不应该依赖于此。它可能适用于测试设置中的浏览器,但不能保证它适用于其他浏览器。找到另一种方法。

您可以通过使用javascript而不是重定向来实现这一点,但通过重定向传递数据的唯一方法是通过URL、会话或cookie

$_POST['errors'] = $tempError;
//redirect back to referring url

?>
<html><head><title></title></head><body>
<form id="temp_form">
<?php
foreach($_POST as $k=>$v) {
?><input type="hidden" name="<?php echo htmlentities($k); ?>" value="<?php echo htmlentities($v); ?>" /><?php 
}
?>
</form>
<script type="text/javascript">
    setTimeout(function() { document.getElementById('temp_form').submit(); },100);
</script>
</body>
</html>
<?php
    die();
$\u POST['errors]=$tempError;
//重定向回引用url
?>
$_POST['errors'] = $tempError;
//redirect back to referring url

?>
<html><head><title></title></head><body>
<form id="temp_form">
<?php
foreach($_POST as $k=>$v) {
?><input type="hidden" name="<?php echo htmlentities($k); ?>" value="<?php echo htmlentities($v); ?>" /><?php 
}
?>
</form>
<script type="text/javascript">
    setTimeout(function() { document.getElementById('temp_form').submit(); },100);
</script>
</body>
</html>
<?php
    die();