Как сохранить строку в массиве? - PHP

0

Я пытаюсь сохранить строку в массиве, но она не сохраняет массив:

 <?php
    session_start();
    $username = $_POST["username"];
    $password = $_POST["password"];
    $users = array();
    $passes = array();
    /*if (isset($_SESSION['users'])) {
        $users = unserialize($_SESSION['users']);
    }
    if (isset($_SESSION['passes'])) {
        $passes = unserialize($_SESSION['passes']); 
    }*/

    if (isset($_POST['button'])) {
        $login_successful = false;
        for ($i = 0; $i < count($_SESSION['user']); $i++) {
            if ($username === $_SESSION['user'][$i] && $password === $_SESSION['pass'][$i]) {
                echo "<p style=\"font-family: Open Sans\">Logged in as " .$users[$i] ."</p>";
                $login_successful = true;
                break; // no need to continue the loop here, so we break out of it
            }
        }
        if (!$login_successful) {
            echo "<p style=\"font-family: Open Sans\">Login Failed</p>";
        }
    }
    else if (isset($_POST['register'])) {
        $users = array_push($users, $username);
        $passes = array_push($passes, $password);
        $_SESSION['user'] = serialize($users);
        $_SESSION['pass'] = serialize($passes);
        echo "Made your account successfully! <a href=\"index.html\">Go back to login</a>";
    }
    else if (isset($_POST['userlist'])) {
        $users = unserialize($_SESSION['users']);
        $passes = unserialize($_SESSION['passes']);

        for ($i = 0; $i < count($users); $i++) { 
            echo $user[$i];
            echo $passes[$i];
        }
    }
?>

Он не сохраняет массив, он меняет его только для текущей страницы, на которую он был вызван, а затем массив возвращается в нуль.

заранее спасибо

  • 1
    Предпосылка вашего вопроса неверна. Когда вы проводите исследование, попытайтесь выяснить, как хранить постоянные значения (подсказка: это называется «сессия»).
  • 0
    PHP не сохраняет переменные при запуске. Вам нужно будет сохранить переменные на веб-сайте, где-нибудь, в файле или в базе данных. У вас впереди много гуглят.
Показать ещё 1 комментарий
Теги:
arrays
forms

3 ответа

1

У вас, похоже, огромное непонимание того, как работает PHP. Каждый раз, когда запускается php-скрипт, это похоже на первый в первый раз, когда он когда-либо запускался. Таким образом, ваш массив будет удален из памяти, когда скрипт закончится.

Однако, если вы хотите переносить данные между запросами, вы можете попробовать сеанс.

session_start();//important

//YOUR EXISTING ARRAY
$array = array("element", "element 2", "element 3");

//ADD YOUR NEW ELEMENT TO THE ARRAY
$array = array_push( $array, "NEW ELEMENT" );

//store the new serialized (converted to string) array
$_SESSION['my_array'] = serialize( $array );

if ( isset($_SESSION['my_array']) ) {

    //grab the serialized (string version) of the array, and convert it back to an array

    $my_array = unserialize( $_SESSION['my_array'] ); //holds [0] => "el1", [1] => "el2"
}

Подробнее о сеансах читайте в руководстве по PHP.

Вы также можете попробовать куки или хранить массив в базе данных. Просто знайте, что файлы cookie хранятся на пользовательском компьютере, а сеансы хранятся на сервере.

  • 0
    Но как мне добавить строку в массив и оставить ее там? Я не понимаю, хотя ...
  • 0
    Я добавил некоторый код, который позволяет вам добавить новый элемент в конец массива. Вы понимаете, зачем нам нужен сеанс здесь?
Показать ещё 4 комментария
-1

пусть сделают некоторое улучшение по решению Райана Смита, чтобы сделать его более простым

session_start();

$_SESSION['users'][] = 'Hello';

var_dump($_SESSION['users']);

// if you wanna use $users, 
/*
if(isset($_SESSION['users'])) {
    $users = unserialize($_SESSION['users']);
}
*/
-2

вы можете использовать array_push следующим образом: $ user = array_push ($ user, $ username); Все это!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню