2017-12-23 12 views
-3

私は、PHPのセッション配列に変数からいくつかの値を保存しようとしています。ここでarray_push()は、パラメータ1が配列になることを期待しています。与えられたPHPエラーメッセージ

は私のコードです:

<?php 
session_start(); 
if (session_status() == PHP_SESSION_NONE) { 
    $_SESSION['messages'] = array(); 
} 
$request_params = 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_push()はnullを与えられ、パラメータ1が配列であることを期待します()を内破:ライン12

にnew.phpに渡される無効な引数線9

警告にnew.phpで10

9行目:

array_push($ _ SESSION [ 'メッセージ']、$午後)。

そして、12行目:

'テキスト' =>破(」」、$ _SESSION [ 'メッセージ'])

は、どのようにこれらの問題を解決するには?

+0

これは、 '$ _SESSION ['messages']'は__defined__ではないことを意味します。 –

+0

しかし、私はあなたが私のコードの上部に見るように定義しました。 – roureuaevane

+0

あなたはそうしないと思います。 –

答えて

0

あなたはエラーを取得する:警告:array_push()は、あなたの$_SESSION['messages']変数が設定されることはありませんので、ヌル

与えられ、パラメータ1が配列であることを期待しています。あなたのコードのこの部分が実行されます

session_start(); 
if (session_status() == PHP_SESSION_NONE) { 
    $_SESSION['messages'] = array(); 
} 

最初の行は、新しいセッションを開始します。従ってsession_status() == PHP_SESSION_NONEsession_status()が2を返し、PHP_SESSION_NONEが1に等しいので、trueになることはありません。その結果、$ _SESSION ['messages'] = array();実行されません。

実行する必要があることは、セッションが開始されているかどうかを確認し、セッションが開始されていない場合は起動します。

if (session_status() == PHP_SESSION_NONE) { 
    session_start(); 
} 

これは、スクリプトのどこかで以前に呼び出されたsession_start()があるかどうかを確認します。

if(!isset($_SESSION['messages'])) 
    $_SESSION['messages'] = array(); 

はそれが役に立てば幸い:

その後、その後、この行を追加します。

関連する問題