如何在页面加载两次时保存 PHP 变量


How to save a PHP variable when a page loads twice

用户在文本框中输入两个日期周期,SQL select 语句从中间输入的数据库中选取移动号码。我想选择它们并在页面上显示它们。在同一显示页面上,我有一个文本区域,用户可以在其中键入消息,并在提交时将其发送到这些选定的号码并显示手机号码。我在将$mobilenumber传递给函数 sendbulk 时遇到了挑战,该函数将消息发送到变量显示$mobilenumber手机号码。除了通过$mobilenumber之外,其他一切都还可以。我认为这是因为在页面加载以显示所选联系人后,在您提交批量功能的第二次加载时,$message的值已经丢失$mobilenumber。我该如何保存它。检查下面的示例代码并请提供建议。如何保存$mobilenumber,以便在第二次加载时它仍然被传递给函数 sendbulk()?任何人?

<?php

//Define variable and set to empty values
 $message =  "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
  $message = test_input($_POST['message']);
  echo "$message";
}
function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}

$time1             = isset($_POST['t1']) ? $_POST['t1'] : 'default something missing';
$time2             = isset($_POST['t2']) ? $_POST['t2'] : 'default something missing';
   //connection
$sql =  "SELECT DISTINCT msisdn FROM customer WHERE DATE_FORMAT(time_paid, '%Y-%c-%e') BETWEEN ADDDATE('$time1',INTERVAL 0 HOUR) AND ADDDATE('$time2',INTERVAL '23:59' HOUR_MINUTE)";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
  echo " Recipients: ";  echo "$result->num_rows <br> <br>";
    // output data of each row
    while($row = $result->fetch_assoc()) {
 $mobilenumber = $row['msisdn'];
      echo "Mobile : " . "$mobilenumber" . "<br>";
    }
} else {
    echo "No Contacts to Display";
}
$conn->close();
sendbulk($mobilenumber,$message);
?>

<center></center> <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">  
  <textarea name='message' rows="6" cols="60" placeholder="Please Type Your Message Here"></textarea>
  <br><br>
  <input type="submit" name="submit" value="Send Message">  
</form></center>

<?php
function sendbulk($mobilenumber,$message) {
echo "$mobilenumber";
echo "$message";

    $serviceArguments = array(
        "mobilenumber" => $mobilenumber,
        "message" => $message_sent
    );
    $client = new SoapClient("http://*******");
    $result = $client->process($serviceArguments);

    return $result;

}

您使用sessions .

下面是一个示例代码:

<?php
session_start();
if (!isset($_SESSION['count'])) {
  $_SESSION['count'] = 0;
} else {
  $_SESSION['count'] += 1;
}
echo $_SESSION['count'];
?>

继续通过您的 Web 服务器重新加载此文件。您应该看到变量递增。

作为替代方法,您也可以使用 $_COOKIE .唯一的区别是$_SESSION保存在服务器端,在客户端无法访问。为了识别客户端,它会在客户端上存储该会话的 cookie。

另一方面,$_COOKIE完全存储在客户端上,并由浏览器在每个请求时传递给服务器。

另请注意一个警告,不要超载您的会话变量或 cookie,因为它会影响您的响应时间。

另请注意,要访问会话的每个 PHP 文件中都需要session_start()