如何将会话变量发送到下一页?

时间:2017-08-09 11:43:39

标签: php ajax session-variables

我正在尝试将会话变量存储到普通变量并使用ajax我需要将值发送到下一页但它在ajax代码中给出了一个错误。以下是我的代码

的index.php

$OTP = $_SESSION['smsgatewaycenterotp'];
echo $OTP;

Ajax功能

<script type="text/javascript">
$('#btnonOtp').click(function()
{
   var otp = $('$OTP').val();

    $.ajax({
        url: "sms.php",
        method:'POST',
        data:
        {mobile: $('#mobile').val(),
         otp:otp},
        success: function(msg)
        {
            alert('OTP Sent');
            console.log(msg);
        }               
    });
});

</script>

Sms.php

    <?php 
include 'send.php';

session_start();



var_dump($_POST);
console.log(msg);
echo $_POST['mobile'];

$OTP = $_POST['otp'];
$number = $_POST['mobile'];

//$text = 'Hi There, how are you?'; 
$sms_api_result = sms_Send($number, 'Please do not share the one time password with anyone. Your One Time password is: '.$OTP,$debug);

?>

任何人都可以帮我解决这个问题。

3 个答案:

答案 0 :(得分:0)

var otp = $('$OTP').val();做什么?如果您希望读取PHP $OPT值,则根本不会。

您没有在ajax中引用PHP $OPT值。

尝试:

$.ajax({
    url: "sms.php",
    method:'POST',
    data:
    {mobile: $('#mobile').val(),
     otp: <?php echo $OPT; ?>},
    success: function(msg)
    {
        alert('OTP Sent');
        console.log(msg);
    }               
});

这意味着当您发布到sms.php时,它会在帖子数据中包含opt:,其中包含$OPT的值。

您的脚本sms.php将能够在进行ajax调用时阅读$_POST['opt']

顺便说一下 - sms.php中还有其他错误,例如console.log行 - 这是一个javascript函数,在PHP中不起作用(你仍然在{ {1}}标签)

要对此进行测试,请修改您的<?php ?>以便只包含此代码:

sms.php

当您发出ajax请求时,您应该弹出一个(<?php if (isset($_POST['opt'])) { echo $_POST['opt']; } else { echo "opt not set<br>"; var_dump($_POST); } ?> );在浏览器中。如果您打开控制台,它应该显示alert('OPT Sent'的值,或者显示未设置的消息。如果它显示“opt not set”,则表示你的ajax调用中的这一行没有发送正确的值:

$_POST['opt']

但是,您可以通过查看源代码来解决Javascript所在的位置(otp: <?php echo $OPT; ?> )。如果它为空白或没有值,则index.php上的帖子数据将无法使用。

您还必须了解没有“下一页”。您发布的代码只会发出从sms.phpindex.php的ajax发布请求。它不会“加载”sms.php,也不会将用户重定向到那里。由于ajax成功函数中的sms.php语句,您在此处看到的唯一输出是在浏览器控制台中。

答案 1 :(得分:0)

如果您想在同一网站的其他页面中获取会话值,则可以使用$_SESSION变量获取该值。不需要ajax。以下是示例

第2页

session_start();
$session_value = '';
if(isset($_SESSION['smsgatewaycenterotp'])){
 $session_value .=$_SESSION['smsgatewaycenterotp']; // if it is string
}
echo  $session_value; // Out put some value

isset() php内置函数将检查会话值,因此如果有值,那么if语句将为true,并且该值将被分配给$session_value变量,否则变量将是空的。

答案 2 :(得分:0)

启动会话后,可以在项目的每个页面中访问Session变量

session_start();

了解如何处理$ _SESSION的存储使用,请阅读以下内容: http://php.net/manual/en/book.session.php