【发布时间】:2017-12-23 14:00:57
【问题描述】:
我正在用 PHP 制作一个基本的聊天框。基本上我不想使用数据库连接向用户发送消息。相反,我喜欢存储用户在会话数组中发送的不同值。
例如看看这个:
<?php
if (session_status() == PHP_SESSION_NONE) {
session_start();
$_SESSION['messages'] = array();
}
if (isset($_POST['send'])){
$pm = $_POST['message'];
array_push($_SESSION['messages'], $pm);
$request_params = [
'chat_id' => $id,
'text' => implode(" ", $_SESSION['messages'])
];
print_r($request_params);
}
?>
<div class="box-footer">
<form action="" method="post">
<div class="input-group">
<input type="text" name="message" placeholder="Write your direct message" class="form-control">
<span class="input-group-btn">
<input name="send" type="submit" class="btn btn-danger btn-flat"/>
</span>
</div>
</form>
</div>
如您所见,它基本上将用户输入的message 存储在一个名为$pm 的变量中,通过这句话:'text' => implode(" ", $_SESSION['messages']) 它将简单地将$pm 的字符串 值推入$_SESSION['messages']。
然后我尝试将$id的值(这里不需要包含id的代码,它只是一个用户的id)保存为chat_id和$_SESSION['messages']为text。
现在为了测试这一点,我尝试了print_r($request_params);,但它只显示了这个:
Array ( [chat_id] => 108132368 [text] => )
如您所见,它不会返回会话变量$_SESSION['messages'])。
那么为什么它不起作用?如何在会话数组中存储不同的变量?
更新 1:
<?php
session_start();
if (session_status() == PHP_SESSION_NONE) {
$_SESSION['messages'] = array();
}
if (isset($_POST['send'])){
$pm = $_POST['message'];
array_push($_SESSION['messages'], $pm);
$request_params = [
'chat_id' => $id,
'text' => implode(" ", $_SESSION['messages'])
];
echo $_SESSION['messages'];
print_r($request_params);}
?>
<div class="box-footer">
<form action="" method="post">
<div class="input-group">
<input type="text" name="message" placeholder="Write your direct message" class="form-control">
<span class="input-group-btn">
<input name="send" type="submit" class="btn btn-danger btn-flat"/>
</span>
</div>
</form>
</div>
【问题讨论】:
-
它工作正常并提供输出
Array ( [chat_id] => 1 [text] => ss )