我正在创建一个表单并且卡在某一点这是我在index.php中的代码
<?php
session_start();
if ( isset( $_POST['submit'] ) ) {
if ( ! isset( $_SESSION['name'] ) ) {
echo 'Please Enter your name to make an entry into database';
header ( 'location:index.php' );
//$_SESSION['name'] = [];
//array_push($_SESSION['name'], $_POST['name']);
} else {
array_push( $_SESSION['name'], $_POST['name'] );
header( 'location:database.php' );
}
}
?>
<form method="post">
<label>Name:</label>
<input type="text" name="name">
<input type="submit" name="submit">
</form>
现在在database.php中我有以下代码
<?php
session_start();
if(isset($_SESSION['name'])) {
$a = $_SESSION['name'];
print_r($a);
}
?>
如果未设置输入数据字段(空)并且将用户引导到带有消息的同一索引页面,我不想创建数组键
答案 0 :(得分:0)
正如人们在你的问题的评论中提到的那样,每次都有一个新数组。没有任何东西被覆盖,因为每次提交时,都是一个新脚本。这就是关键:PHP是一种脚本语言;这不是持久的。每次调用PHP脚本时,它都会运行并死掉。数据未保留;它不是有状态的。每次点击提交时,它都是对您的服务器的全新调用,并且该脚本不知道以前的脚本运行。因此,每次变量都是全新的。
这就是为什么每个人都提到使用一些持久形式的数据,无论是会话,cookie还是数据库。这些方法存在于PHP之外,允许您在脚本之间移动数据。
答案 1 :(得分:0)
关于您的代码,它将是:
session_start();
if(isset($_POST['submit'])){
if (isset($_POST['name']) && $_POST['name'] != '') {
if(!isset($_SESSION['name'])) {
$_SESSION['name'] = [];
array_push($_SESSION['name'], $_POST['name']);
} else {
array_push($_SESSION['name'], $_POST['name']);
}
header('location:session2.php');
} else {
$errors = 'Name cannot be empty';
}
}
?>
<?php if (isset($errors)) : ?>
<span style="color:red"><?= $errors; ?></span>
<?php endif; ?>
<form method="post">
<label>Name:</label>
<input type="text" name="name">
<input type="submit" name="submit">
</form>
和database.php文件:
<?php
session_start();
if(isset($_SESSION['name'])) {
$a = $_SESSION['name'];
print_r($a);
}
?>