2017-12-23 1 views
0

저는 PHP로 기본 대화 상자를 만들고 있습니다. 기본적으로 사용자에게 메시지를 보내기 위해 데이터베이스 연결을 사용하고 싶지 않습니다. 그 대신에, 나는 사용자가 세션 배열에 보내는 다른 값들을 저장하는 것을 좋아한다. 그것은 것입니다 간단한 푸시 문자열'text' => implode(" ", $_SESSION['messages']) : 당신이 기본적으로 사용자가 $pm라는 변수에이 문장으로 입력 한 message를 저장할 볼 수 있듯이세션 배열에 다른 변수를 저장하는 방법

<?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> 

이에서 AA를 살펴 예를 들어

$pm$_SESSION['messages'].

그런 다음 나는 $id 값을 저장하지하려고 chat_idtext$_SESSION['messages']로 (여기 ID의 코드를 포함 할 필요, 그것은 사용자의 단지 ID입니다).

지금 이것을 테스트하기 위해 나는 print_r($request_params);을 시도했지만 그것은 단지 보여줍니다에만이 : 당신이 $_SESSION['messages'])있는 세션 변수를 반환하지 않습니다 볼 수 있듯이

Array ([chat_id] => 108132368 [text] =>) 

.

그렇다면 왜 작동하지 않습니까? 세션 배열에 다른 변수를 저장하려면 어떻게해야합니까?

UPDATE 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> 
+0

그 잘 작동 및 출력'배열을 제공 ([chat_id] => 1 [텍스트] => SS)' – Artier

답변

1

나는 문제가 여기에 거짓말 같아요

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

변수 $_SESSION['messages'] 그래서 아마

session_start(); 
if(empty($_SESSION['messages'])) $_SESSION['messages'] = array(); 
+0

내가 그것을 시도 :) 도움이하지만 여전히 나는 그것을 시도 빈 값 – roureuaevane

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_status() == PHP_SESSION_NONE 조건에 $_SESSION['messages']을 선언하면 안됩니다. $_SESSION['messages'] 어레이가 이미 정의되어 있는지 확인해야하며 그렇지 않은 경우 정의하십시오. 이를 수행하려면 isset()을 사용하십시오.

+0

을 제공하지만 희망 여전히 값이 비어 있습니다. – roureuaevane

+0

업데이트 된 코드를 추가하여 문제가 무엇인지 확인할 수 있습니까? –

+0

예, 체크 아웃 ** 업데이트 1 **. – roureuaevane

관련 문제