首页 文章

如何在会话变量中传递电子邮件

提问于
浏览
-1

我理解PHP中$ _SESSION变量的基础知识 . 我目前有一个站点,可以在整个页面中传递几个值来管理SQL查询 . 我遇到了一个新问题:

我在用户表中使用电子邮件地址作为主键 . 我希望将此电子邮件传递到第二页(一旦从服务器收集了额外的信息),并在选择链接时动态加载内容 . 这是我的问题设置:

//从服务器返回的数据:// $ FName = bob,$ LName = rogers,$ Email = bob@rogers.com

$_SESSION['userEmail'] = $Email;
$_SESSION['FirstName'] = $FName;
$_SESSION['LastName'] = $LName;

当我在第二页上加载内容时,我收到这些值:

echo $_SESSION['userEmail'];  //bob@rogers_com !!!!! THIS is not correct
echo $_SESSION['FirstName'];  //bob
echo $_SESSION['LastName'];   //rogers

电子邮件是从页面上的POST表单收集的 . 它是表单中唯一的值 . 在第一页上,我使用end(array_keys($ _ POST))检索电子邮件,这是“$ _SESSION ['userEmail'] = $ Email”来自的地方 . 它更具体地说是:: $ _SESSION ['userEmail'] = end(array_keys($ _ POST))::

如何使电子邮件安全地通过请求而不进行转换?

经过进一步的故障排除后,我已经能够确定在表单的POST请求中发生了这种转换 . 单击时,表单使用POST方法,该方法在PHP中使用if($ _ SERVER ['REQUEST_METHOD'] =='POST'){}拦截,其中我捕获值的数组(在我的情况下,只有一封电子邮件) ) - 现在转换电子邮件的地方 .

3 回答

  • 0

    如果您想使用未转换的文本(如哈希,编码等),您可以尝试使用替代密钥替代您的电子邮件主键 .

    您可以从每行的auto_increment索引键中获取命中 .

    之前:

    select * from users where email = 'johndoe@johndoe.com';
    

    后:

    select * from users where id = '1';
    

    这等于:

    select * from users where id in (select id from users where email = 'johndoe@johndoe.com');
    

    祝好运 .

  • 0

    我有搜索,发现这个东西在Xampp localhost中工作 . 这将有所帮助 .

    /** 
         * Return parsed body in array format (without converting dots and spaces to underscore). 
         * @return array result parsed 
         */     
        function fetch_parsed_body_nodots() 
        { 
            function DANODOT($string) {  
                 $bes1= explode("&", $string);  
                 foreach ($bes1 as $bes2) { 
                     $bes2= explode("=",$bes2); 
                     list($kilil, $beha) = array_map("urldecode", $bes2); 
                     if(!empty($kilil)){ 
                         $te[$kilil] = $beha;  
                     } 
                 } 
                 return $te;  
            } 
            return DANODOT($this->result_body); 
        }
    

    http://forum.directadmin.com/showthread.php?t=48001

  • 0

    我想出了一个解决方法:

    收到电子邮件后,您可以替换字符'' . 具有不同的字符序列;这是通常的电子邮件地址中找不到的东西 . 我发现 - # - 是一个体面的(通常) . 这就是我做的方式:

    $TempFormat = strtr($row['UserEmail'], array('.' => '-#-'))
    

    然后,当我转到我的if($ _ SERVER ['REQUEST_METHOD'] =='POST'){}函数时,我通过执行以下操作将字符串转换回它的(希望)原始状态:

    $OriginalFormat = strtr(end(array_keys($_POST)), array('-#-' => '.'))
    

相关问题