关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。
两年前关门了。
改进这个问题
为了注册一个用户,我使用了一个由两页组成的表单。第一个表单(adduser.php)通过post将数据发送到第二个表单(plz.php)。例如,在第二种形式中,我将上一页的post值保存在session变量中
$_SESSION['phone1'] = $_POST['telnr'];
我已经检查过了,数据正确地发送到了第二张表格。第二个表单只有一个下拉列表,在选择一个选项后,它应该保存数据库中的所有数据。问题是,当我发送第二个表单时,所有会话变量都被覆盖,并收到一条错误消息“email cannot be null”。我假设其他变量也被覆盖了。到目前为止,我已经尝试将会话数据保存在一个数组中,然后提取它,但没有成功。第二种形式是这样的。是的,会话从每个文件的顶部开始。
$_SESSION['email1'] = $_POST['email'];
$_SESSION['passwort1'] = $_POST['passwort'];
$_SESSION['vname1'] = $_POST['vname'];
$_SESSION['fname1'] = $_POST['fname'];
$_SESSION['phone1'] = $_POST['telnr'];
$_SESSION['firma1'] = $_POST['firmen_name'];
$_SESSION['ad11'] = $_POST['adresse1'];
$_SESSION['ad21'] = $_POST['adresse2'];
$_SESSION['kr1'] = $_POST['kreis'];
//$_SESSION["plz1"] = $_POST['plz'];
if(isset($_POST['submit'])){
// Passwort wird gehasht und in der Datenbank gespeichert, bcrypt
algorithm, cost = 10, salt wurde automatisch generiert und ist unique
$hash = password_hash($_SESSION['passwort1'], PASSWORD_DEFAULT);
$insert = "INSERT INTO users
(email,passwort,vname,fname,firmen_name,telnr, userlevel, active,
adresse1, adresse2, kreis, plz) VALUES
(:email,:hash,:vname,:fname,:firma,:phone,1,0, :adresse1, :adresse2,
:kreis, :plz)";
$prepStmt = $pdo->prepare($insert);
$prepStmt ->bindParam("email", $_SESSION['email1']);
$prepStmt ->bindParam("hash", $hash);
$prepStmt ->bindParam("vname", $_SESSION['vname1']);
$prepStmt ->bindParam("fname", $_SESSION['fname1']);
$prepStmt ->bindParam("firma", $_SESSION['firma1']);
$prepStmt ->bindParam("phone", $_SESSION['phone1']);
$prepStmt ->bindParam("adresse1", $_SESSION['ad11']);
$prepStmt ->bindParam("adresse2", $_SESSION['ad21']);
$prepStmt ->bindParam("kreis", $_SESSION['kreis1']);
$prepStmt ->bindParam("plz", $_POST["plz1"]);
$prepStmt ->execute();
header("Location: users.php");
exit();
}else{
?>
<div class="container">
<div class="col-md-offset-3 col-md-7">
<form action="plz.php" method="post" class="text-center col-md-
offset-0.5 ">
<!-- more form -->
2条答案
按热度按时间uidvcgyl1#
使用第三页保存
plz.php
会话中的内容(列表)和值。很明显,当您将第二个表单元素提交到同一页时,会话数据会被空值重写。
因此,您可以按以下方式更改窗体操作:
或者你可以寄第二张表格
plz
使用get方法并将其请求值从$_POST
至$_GET
. 但要记住检查$_POST
空到不设置会话!csga3l582#
正在覆盖您的$\u会话数组,因为您正在表单提交时覆盖它。仅当会话数组未提交时才将值分配给它。。。
因此,当表单被提交时,您的会话不会被覆盖,您只会获取sql查询的值,并执行location头和exit