我正在用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']
保存为{{1 }}。
现在为了测试这个,我尝试了text
,但它只显示了这个:
print_r($request_params);
正如您所看到的,它不会返回Array ( [chat_id] => 108132368 [text] => )
的会话变量。
那为什么它不起作用?如何在会话数组中存储不同的变量?
更新1:
$_SESSION['messages'])
答案 0 :(得分:1)
我认为问题可能就在这里
if (session_status() == PHP_SESSION_NONE) {
session_start();
$_SESSION['messages'] = array();
}
变量$_SESSION['messages']
在每个页面加载时被覆盖,因此可能会更改为
session_start();
if( empty( $_SESSION['messages'] ) ) $_SESSION['messages'] = array();
答案 1 :(得分:1)
请更改您的代码,如下所示:
<?php
//check if a session has been defined earlier somewhere.
if (session_status() == PHP_SESSION_NONE)
session_start();
if(!isset($_SESSION['messages']))
$_SESSION['messages'] = array();
if (isset($_POST['send'])){
// your code...
}
最初你的问题是你每次提交表单时都创建了一个新数组(抱歉,我之前误解了你的目的)。
但是,您不应在$_SESSION['messages']
条件中声明session_status() == PHP_SESSION_NONE
。您需要查看是否已定义$_SESSION['messages']
数组,如果没有,请定义该数组。使用isset()
来执行此操作。
希望有所帮助:)