我正在努力创建一个表单并卡在一个点 这是我在索引中的代码.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>
现在在数据库中.php我有以下代码
<?php
session_start();
if(isset($_SESSION['name'])) {
$a = $_SESSION['name'];
print_r($a);
}
?>
如果未设置输入数据字段(空),我不想创建数组键并将用户定向到带有消息的同一索引页
关于你的代码,它将是:
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>
和数据库.php文件:
<?php
session_start();
if(isset($_SESSION['name'])) {
$a = $_SESSION['name'];
print_r($a);
}
?>
正如人们在您问题的评论中提到的,您每次都有一个新数组。没有任何东西被覆盖,因为每次提交时,它都是一个新脚本。这就是关键:PHP 是一种脚本语言;它不是持久的。每次调用 PHP 脚本时,它都会运行并死亡。不保留数据;它不是有状态的。每次点击提交时,它都是对服务器的全新调用,并且脚本不知道脚本的先前运行。因此,变量每次都是全新的。
这就是为什么每个人都提到使用某种持久形式的数据,无论是会话、cookie 还是数据库。这些方法存在于 PHP 之外,并允许您在脚本之间移动数据。