[英]How to store different variables in session array
我正在用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>
如您所見,它基本上存儲了用戶在名為$pm
的變量中鍵入的message
,並通過以下語句: '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>
我認為問題可能出在這里
if (session_status() == PHP_SESSION_NONE) {
session_start();
$_SESSION['messages'] = array();
}
變量$_SESSION['messages']
在每次加載頁面時都會被覆蓋,因此可能更改為
session_start();
if( empty( $_SESSION['messages'] ) ) $_SESSION['messages'] = array();
請按以下方式更改您的代碼:
<?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_status() == PHP_SESSION_NONE
條件內聲明$_SESSION['messages']
。 您需要查看是否已經定義了$_SESSION['messages']
數組,如果沒有定義,請進行定義。 使用isset()
可以做到這一點。
希望能幫助到你 :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.