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

时间:2017-11-03 12:51:21

标签: php arrays forms input

我正在创建一个表单并且卡在某一点这是我在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);
      }
 ?>

如果未设置输入数据字段(空)并且将用户引导到带有消息的同一索引页面,我不想创建数组键

2 个答案:

答案 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);
}
?>