gpt4 book ai didi

php - 无法让 $_POST 工作

转载 作者:行者123 更新时间:2023-12-04 05:52:20 24 4
gpt4 key购买 nike

我正在尝试使用此表单(在 account.html 中)为数组分配值:

<form name="register" action="register.php" method="post">
<label for="username">Username:</label> <input type="text" name="username" class="textb" maxlength="30"/><br /><br>
Password : <input type="password" name="password1" class="textb"/><br /><br>
Re-Type Password: <input type="password" name="password2" class="textb"/><br /><br>

<br>
<input type="submit" name="Create Account" value="Create Account" class="texta" />
</form>

但是当我尝试在这里调用它们时(在 register.php 中):
$username = $_POST["username"];
$password1 = $_POST["password1"];
$password2 = $_POST["password2"];

我只是得到:
Notice: Undefined index: username in C:\xampp\htdocs\register.php on line 3

Notice: Undefined index: password1 in C:\xampp\htdocs\register.php on line 4

Notice: Undefined index: password2 in C:\xampp\htdocs\register.php on line 5

任何人都可以解释为什么表格没有发布变量吗?

这是完整的 register.php 文件:
<?php

$username = $_POST["username"];
$password1 = $_POST["password1"];
$password2 = $_POST["password2"];

if($password1 != $password2)
header("location:register.php");

if (strlen($username) > 30)
header("location:register.php");
$dbhost = 'localhost';
$dbname = 'test';
$dbuser = 'root';
$dbpass = '';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
mysql_select_db($dbname, $conn);
$username = mysql_real_escape_string($username);
$query = "INSERT INTO members (username, password)
VALUES ('$username', '$password1');";
mysql_query($query);
mysql_close();
header('Location: index.php');

?>

这是完整的 account.html 文件:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Video for Education Log In</title>
<link rel="stylesheet" type="text/css" href="style1.css" />
</head>

<body>
<div id="wrapper">
<div id="header">
<div id="logo">
videoedu.edu </div>
<div id="menu">
<ul>
<li><a href="index.html" class="menua">Home</a></li>
<li><a href="about.html" class="menua">About Us</a></li>
</ul>
</div>
</div>
<br><br><br><br>
<div id="page">




<div id="content">
<h2>Create an Account. It's free and lets you share and watch streamed educational video content.</h2>
<h3>Simply fill out the form below.....</h3>
<div class= "form">
<form name="register" action="register.php" method="post">
<label for="username">Username:</label> <input type="text" name="username" class="textb" maxlength="30"/><br /><br>
Password : <input type="password" name="password1" class="textb"/><br /> <br>
Re-Type Password: <input type="password" name="password2" class="textb"/> <br /><br>
<br>
<input type="submit" name="Create Account" value="Create Account" class="texta" />
</form>
</div>
</div>
</div>
</div>
</body>
</html>

最佳答案

我试过你的代码,它正在工作。

你的问题可能在这里:

header("location:register.php");

如果我正确提交表单(用户名 < 30 和密码 1 == 密码 2),则 POST 很好,但是如果我使用(密码 1 != 密码 2)提交,标题将重定向回同一页面(register.php)和 POST将是空的。

尝试做一个
var_dump($_POST);
die();

这里
$username = $_POST["username"];
$password1 = $_POST["password1"];
$password2 = $_POST["password2"];
var_dump($_POST);
die();

你会看到它正在工作。

此外,您应该在连接到数据库之前添加更多验证。您应该验证用户名、密码 1 和密码 2 的 $_POST isset,并且应该转义所有内容以避免一些常见的攻击,例如 SQL 注入(inject)和 XSS(跨站点脚本)。

希望这可以帮助

关于php - 无法让 $_POST 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9929821/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com