如何防止在URL中显示变量?

时间:2011-12-03 08:48:13

标签: php url

<?php
    if(isset($_POST['chgPwd']))
    {
        $oldpwd=$_POST["txtOldPassword"];
        $newpwd=$_POST["txtNewPassword"];
        $cnewpwd=$_POST["txtConfirmNewPassword"];
        //did stuff to get in the text fields
    $oldpass = oci_result($new1,"OLDPASS");
    if($oldpwd!=$oldpass)
        {
            $msg = "The old password does not match with the one in the records";
            header("Location:ErrorPage.php?abc=".$msg);
        }
    } 
    ?>

我的问题是,当我将页面重定向到ErrorPage.php时,我能够看到URL中的整个页面,我不希望这样。有没有办法解决。我正在考虑绑定会议,但我无法做到正确。如果有的话,请你告诉我正确的方法吗?

4 个答案:

答案 0 :(得分:2)

您应urlencode($msg) ( string $str )并在标题后添加exit()

编辑:嗯,您只想在浏览器网址中看到ErrorPage.php,对吧?没有任何消息或属性?然后,您必须使用SESSIONS(或Cookies)存储当前用户的消息/位置,然后使用单个消息将其重定向回ErrorPage

答案 1 :(得分:1)

摆脱错误页面并在oncite上显示错误。

以下是注册码的草图

<?  
include 'config.php';
if ($_SERVER['REQUEST_METHOD']=='POST') {  

  $err = array();
  //performing all validations and raising corresponding errors
  if (empty($_POST['name']) $err[] = "Username field is required";  
  if (empty($_POST['text']) $err[] = "Comments field is required";  

  if (!$err) {  
    // if no errors - saving data 
    // and then redirect:
    header("Location: ".$_SERVER['PHP_SELF']);
    exit;
  }  else {
    // all field values should be escaped according to HTML standard
    foreach ($_POST as $key => $val) {
      $form[$key] = htmlspecialchars($val);
    }
} else {
  $form['name'] = $form['comments'] = '';  
}
include 'form.tpl.php';
?>  

模板包含表单和错误消息

<? if ($err): ?>
  <? foreach($err as $e): ?>
<div class="err"><?=$e?></div>
  <? endforeach ?>
<? endif ?>
<form>
  <input type="text" name="name" value="<?=$form['name']?>">
  <textarea name="comments"><?=$form['comments']?></textarea>
  <input type="submit">
</form>

这是最常见的表单处理方式POST/Redirect/GET

答案 2 :(得分:0)

header("Location:ErrorPage.php?abc=1");
  

ErrorPage.php

if(isset($_GET['abc'])=="1")
{
 Show Some Message
}

答案 3 :(得分:-1)

您可以使用会话隐藏该参数。这是最简单的方法。