单个php页面中的多个Post表单导致问题
我在一个php页面上有多个表单。一个index.php页面上的登录表单、注册表单和发布状态表单。 当我点击一个表单的提交按钮时,所有表单似乎都是提交的。 当我没有登录并尝试使用post status表单发布状态时,我会收到预期的“未登录”错误,但当我看到其他表单时,我会收到如下php代码错误 注意:未定义索引:uname 注意:未定义索引:pass 我该如何处理这件事?单个php页面中的多个Post表单导致问题,php,html,forms,post,Php,Html,Forms,Post,我在一个php页面上有多个表单。一个index.php页面上的登录表单、注册表单和发布状态表单。 当我点击一个表单的提交按钮时,所有表单似乎都是提交的。 当我没有登录并尝试使用post status表单发布状态时,我会收到预期的“未登录”错误,但当我看到其他表单时,我会收到如下php代码错误 注意:未定义索引:uname 注意:未定义索引:pass 我该如何处理这件事? if(isset($\u POST['submit'])似乎是导致问题的原因。我对php很陌生。如果我错了,请帮我改正 我的代
if(isset($\u POST['submit'])
似乎是导致问题的原因。我对php很陌生。如果我错了,请帮我改正
我的代码:
<div id="myModal1" class="modal1">
<div class="modal-content">
<span class="close" onclick="login_modal_hide()">×</span>
<section id="signin">
<h1>Sign In</h1>
<form method="POST">
<input type="text" name="username" placeholder="Username"><p></p>
<input type="password" name="password" placeholder="Password"><p></p>
<input type="submit" value="SIGN IN"><p></p>
<a href="#">Forgot Password?</a>
<?php
session_start();
include("config.php");
if($_SERVER["REQUEST_METHOD"] == "POST") {
$uname = mysqli_real_escape_string($dbc,$_POST['username']);
$pass = mysqli_real_escape_string($dbc,$_POST['password']);
$query = "SELECT uname FROM users WHERE uname = '$uname' and pass = '$pass'";
$result = mysqli_query($dbc,$query);
$row = mysqli_fetch_array($result,MYSQLI_ASSOC);
//$active = $row['active'];
$count = mysqli_num_rows($result);
if($count == 1) {
$_SESSION['uname']="uname";
$_SESSION['login_user'] = $uname;
header("location: welcome.php");
}else {
echo "<p class='error'>Your Login Name or Password is invalid</p>";
}
}
?>
</form>
</section>
</div>
</div>
<!-- Modal SignUP form -->
<div id="myModal2" class="modal2">
<div class="modal-content">
<span class="close" onclick="signup_modal_hide()">×</span>
<?php
$unameErr = $passErr = $emailErr = "";
if(isset($_POST['submit'])) {
$uname = test_input($_POST['uname']);
$email = test_input($_POST['email']);
$pass = $_POST['pass'];
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $emailErr = "Invalid email format"; }
else if(!preg_match('/^[A-Za-z][A-Za-z0-9]{2,31}$/',$uname)) { $unameErr = "Invalid username format (Must start with letter; 3-32 characters; Letters and numbers only)"; }
else if(!preg_match('/^(?=.*\d)(?=.*[A-Za-z])[0-9A-Za-z!@#$%]{8,12}$/', $pass)) { $passErr = "Invalid Password format (Must contain at least 1 number and 1 letter; Must be 8-12 characters)"; }
else {
$dbc = mysqli_connect('localhost', 'root', '', 'DATA') or die('Error connecting to MySQL server!');
$query = "INSERT INTO users (uname, email, pass, status, xp) VALUES('$uname', '$email', '$pass', '0', '100')";
$result = mysqli_query($dbc, $query) or die('Error querying database!');
echo 'Thanks for Signing UP! Welcome '.$uname.'!';
mysqli_close($dbc);
}
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
<h1>Sign UP</h1>
<section id="signup">
<form method="post" action="">
<input type="text" id="uname" name="uname" placeholder="Username" required><p class="error"><?php echo $unameErr;?></p>
<input type="text" id="email" name="email" placeholder="Email address" required><p class="error"><?php echo $emailErr;?></p>
<input type="password" id="pass" name="pass" placeholder="Password" required><p class="error"><?php echo $passErr;?></p>
<p><input type="checkbox" id="agreement" name="agreement" required>I agree to the <a href="#">Terms</a> and <a href="#">Privacy</a></p>
<input type="submit" value="Sign UP!" name="submit">
</form>
Already have an account? <a href="javascript:void(0);" onclick="signup_modal_hide(); login_modal();">Log In</a>
</section>
</div>
</div><div class='panel'>
<form method='post' action=''>
<textarea id='qdesc' name='content' placeholder='Your Answer...' required></textarea>
<input type='submit' value='Post Answer' name='submit'>
</form>
</div><?php
if(isset($_POST['submit'])) {
if(isset($_SESSION['login_user'])){
$content = $_POST['content'];
$dbc = mysqli_connect('localhost', 'root', '', 'DATA') or die('Error connecting to MySQL server!');
$query = "INSERT INTO answers (whoanswered, content, votes, answeredto) VALUES('$login_session', '$content', '0', '$q')";
$result = mysqli_query($dbc, $query) or die('Error querying database!');
echo 'Post complete!';
//header( "refresh:5; url=./qview.php?q="echo $q;"");
mysqli_close($dbc);
}
}?>
&时代;
登录
尝试这样做,首先命名所有提交按钮,然后检查设置了哪个按钮
比如:
为每个按钮指定不同的名称,以便检查设置了哪个按钮。显示代码please@YuJiaao这是我的密码。。。
<input type="submit" name="signup" value="Sign UP!">
<?php
if($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['signup'])) {
/* Your code here */
}
?>