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

How to send Session Variable to next page?

我正在尝试将会话变量存储到普通变量并使用 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);

?>

谁能帮我解决这个问题。

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);
    }               
});

这意味着当你 POST 到 sms.php 它会在 post 数据中有 opt:,包含 $OPT.[=33 的值=]

当调用 ajax 时,您的脚本 sms.php 将能够读取 $_POST['opt']

顺便说一下 - 你的 sms.php 中还有其他错误,例如 console.log 行 - 这是一个 javascript 函数,在 PHP(您仍在 <?php ?> 标签内)

要对此进行测试,请修改您的 sms.php 以仅包含以下代码:

<?php
if (isset($_POST['opt'])) {
    echo $_POST['opt'];
} else {
    echo "opt not set<br>";
    var_dump($_POST);
}
?>

当您发出 ajax 请求时,您应该会看到一个弹出窗口 (alert('OPT Sent');在浏览器中。如果您打开控制台,它应该显示 $_POST['opt'] 的值,或者一条消息说它没有设置。如果显示 "opt not set",则表示您的 ajax 调用中的这一行未发送正确的值:

otp: <?php echo $OPT; ?>

但是,您可以通过在 Javascript 所在的页面上查看源代码来解决这个问题 (index.php)。如果它为空或没有值,则它不会在 sms.php.

的 post 数据中可用

你也要明白没有"next page"。您 post 编辑的代码只是从 index.phpsms.php 发出 ajax post 请求。它不会 "load up" sms.php,也不会将用户重定向到那里。由于 ajax 成功函数中的 console.log 语句,您将从中看到的唯一输出是在浏览器控制台中。

如果你想在同一网站的另一个页面中获取会话值,那么你可以使用 $_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 语句将为真并将值分配给 $session_value变量否则变量将为空。

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

session_start();

要了解如何处理 $_SESSION 的存储使用,请阅读更多相关信息: http://php.net/manual/en/book.session.php