Я пытаюсь сохранить строку в массиве, но она не сохраняет массив:
<?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];
}
}
?>
Он не сохраняет массив, он меняет его только для текущей страницы, на которую он был вызван, а затем массив возвращается в нуль.
заранее спасибо
У вас, похоже, огромное непонимание того, как работает 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 хранятся на пользовательском компьютере, а сеансы хранятся на сервере.
пусть сделают некоторое улучшение по решению Райана Смита, чтобы сделать его более простым
session_start();
$_SESSION['users'][] = 'Hello';
var_dump($_SESSION['users']);
// if you wanna use $users,
/*
if(isset($_SESSION['users'])) {
$users = unserialize($_SESSION['users']);
}
*/
вы можете использовать array_push следующим образом: $ user = array_push ($ user, $ username); Все это!