2013-10-28 6 views
1

Я пытаюсь сохранить данные из сообщения в моей переменной сеанса массива. Но вместо добавления нового элемента он перезаписывает старый ... Что я делаю неправильно?PHP SESSION ARRAY, переписанный переменной post

//PHP CODE !!! 
$_SESSION['file[]'] = $_FILES['file']; 
$_SESSION['file_names[]'] = $_POST['file_name']; 
print_r($_SESSION['file[]']); //it will only display last selected file. :(

//HTML !!! 
<form method="post" action="<?=$_SERVER['PHP_SELF'];?>" enctype="multipart/form-data"> 
    <input type="input" name="file_name" value=""> 
    <input type="file" name="file" id="file" value=""> 
    <input type="submit" name="SEND" value="ADD"/> 
</form> 

//LITLE CHECK CODE HERE !!! 
//THIS CODE WILL DISPLAY " OUT OF IF STATEMENT !!!" ;/ 

<?php 
    if(isset($_SESSION['file_names[]']) && is_array($_SESSION['file_names[]'])){ 
     foreach($_SESSION['file_names[]'] as $index => $name){ 
        /... 
     } 
    }else{ 
     echo " OUT OF IF STATEMENT !!!"; //executed! 
    } 
?> 

Любой идеал?

+0

вы не можете хранить массивы в переменных сессии, как таким образом, вы должны использовать отдельную сессию переменные для каждого элемента массива ... $ _SESSION ['file_names []'] означает только одну переменную с именем 'file_name []' – HackerGK

+0

* sidenote: * это опечатка, что вы закрываете тег формы с помощью '

'? – Raptor

+0

да это опечатка:> это нормально в моем исходном коде, я исправлю это сейчас. Thx – DevWL

ответ

4

я думаю, что вы хотите сделать $_SESSION мульти двумерный массив, так что изменить:

$_SESSION['file[]'] = $_FILES['file']; 
$_SESSION['file_names[]'] = $_POST['file_name']; 

в

$_SESSION['file'][] = $_FILES['file']; //assign $_FILES data to session array 
$_SESSION['file_names'][] = $_POST['file_name']; //assign $_POST data to session array 
print_r($_SESSION['file']); 
+0

Позвольте мне попробовать эту БРВ! И я вернулся :) Любите вас Sudhir. Работает как шарм! :> – DevWL

Смежные вопросы