2013-03-24 98 views
-1

林试图使一个消息系统,并且当所述接收器被读出的消息那里有一个链接到回复消息,如下:如何从php中隐藏查询字符串?

<a href=mail.php?action=compose&toid='".urlencode($viewrow['sender'])."'&subject='RE:+".urlencode($viewrow['subject'])."'&message=".urlencode($viewrow['message']).">Reply</a> 

的发送者,主题和消息正在从MySQL检索。

用户是看到这样的:

http://www.somesite.com/author/mail.php?action=compose&toid='8'&subject='RE:+test+subject'&message=test+message 

什么,我需要知道的是,如果那里有办法隐藏的主题和回复的网址信息,因此用户只能地址栏上看到:

http://www.somesite.com/author/mail.php?action=compose&toid='8' 

这是如何从数据库中检索主题,消息和ID。

//view message 
if (isset($_GET['action']) && $_GET['action'] == inbox) { 
     if(isset($_GET['viewid'])) { 
      $viewid = $_GET['viewid']; 
    /*  $viewsql = "select * from mail where reciever='".$userid."' and mail_id=".$viewid; */ 
      $viewsql = "select * from mail, authors where (mail.sender = authors.id) and (mail.reciever = '".$userid."') and (mail.reciever_deleted ='0') and mail.mail_id = ".$viewid; 
      $viewquery = mysql_query($viewsql,$connection) or die(mysql_error()); 
      $viewrow = mysql_fetch_assoc($viewquery); 
      if ($viewrow['reciever'] == $userid) { //check if user is the reciever 
      } else { 
       header('Location: mail.php?action=inbox'); 
       exit; 
      } 
      echo "<h3>Lendo mensagem particular da Caixa de Entrada</h3>"; 
      echo "<table align=\"center\" width=\"75%\" class=\"sortable\"> 
        <tr> 
         <td colspan='2' style=\"text-align:center;font-weight:normal;\">Mensagem particular enviada por ".$viewrow['displayname']." em ".date('d/m/y',strtotime($viewrow['created_at'])).".</td> 
        </tr> 
        <tr> 
         <td colspan='2'> 
          <img style=\"float:left;padding: 5px 15px 5px 2px;width: 65px;\" src=\"".$viewrow['gravatar']."\" alt=\"".$viewrow['displayname']."\" title=\"".$viewrow['displayname']."\" /> 
          <div style=\"padding: 8px 5px 2px;\"><span style=\"font-size:1.6em;\">&#8594; </span><b>".$viewrow['subject']."</b></div> 
          <div style=\"padding: 8px 30px 8px 85px;\">".nl2br($viewrow['message'])."<br /></div> 
          <span style=\"float:right;\"> 
           <a href=mail.php?action=compose&toid='".urlencode($viewrow['sender'])."'&subject='RE:+".urlencode($viewrow['subject'])."'&message=".urlencode($viewrow['message']).">Responder</a> | <a href=javascript:confirmDelete('mail.php?action=inbox&deleteid=".$viewid."')>Apagar</a> 
          </span> 
         </td> 
        </tr> 
       </table>"; 

      // mark as read by reciever 
      $query="update mail set mail_status='read' where reciever = '$userid' and mail_id = '$viewid'"; 
      mysql_query($query,$connection) or die(mysql_error()); 
     }     
    }elseif (isset($_GET['action']) && $_GET['action'] == outbox) { ... 

我知道我需要使用后,但如何?

我试过,但无法使它工作。

对不起,我的愚蠢..

+5

使用'POST',而不是'GET'。 – 2013-03-24 08:18:17

+0

如果你有ID,你可能会得到帖子的主题和内容,对吧?一定要从网址中删除单引号。 – 2013-03-24 08:24:53

+0

我试图使用POST但没有成功,也许我的检索是不正确的。我不知道,IM新到这... – 2013-03-24 08:29:37

回答

0

<a>使用POST不能发送信息的页面。
但是,您可以使用JavaScript或表单进行操作。

0

您不能隐藏查询字符串,但是您可以通过POST发送数据,而不是在地址栏中可见。为此,您需要使用表单提交数据;而Pietroalbini是正确的,你不能使用a元素,你可以风格button看起来相同琐碎的困难:

<style> 
button { 
    background:none; 
    border: 0; 
    border-bottom:1px solid blue; 
    color: blue; 
    padding:0;   
} 
</style> 

<form action="script.php" method="post"> 
    <input type="text" name="Test"/> 
    <button type="submit">Submit</button> 
</form> 
相关问题