将数据从输入标签推送到 array-php



我正在努力创建一个表单并卡在一个点 这是我在索引中的代码.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 之外,并允许您在脚本之间移动数据。

最新更新