我有三个文件在登录应用程序上学习PHP。 这是与DB的连接
<?php
# Connecting database below
$connection = mysqli_connect('localhost','root','','loginapp');
if ($connection) {
# code...
echo "connected";
}
else{
echo "Errorr";
die("Database");
}?>
,这是网页视图的HTML代码
<html>
<head>
<title>Form</title>
</head>
<body>
<h1>Welcome to My Form</h1>
<form class="" action="login_create.php" method="post">
<input type="text" name="name" placeholder="Enter your name here"><br>
<input type="password" name="password" placeholder="Enter Password" value=""><br>
<input type="submit" name="submit" value="submit">
</form>
</body>
</html>
这里是出错的文件,它没有检查条目的条件,也没有把数据放到数据库里去了什么地方错了?请帮助 有时会给出
错误&#34;未知&#39; sbumit&#39;在$ _POST&#34;有时它不会 甚至没有显示任何错误
但是什么都不做
<?php
include "db.php";
if (isset($_POST['submit'])) {
$username = $_POST['name'];
$password = $_POST['password'];
if (isset($username) && isset($password)) {
if (strlen($username) > 10 && strlen($username) < 3) {
echo "Must enter username & pass between 3 & 10";
echo "So that we can forward your request";
}
else {
$query = "INSERT INTO users (username,password) VALUES ('$username','$password')";
$result = mysqli_query($connection,$query);
if(!$result)
{
die('Sorry Query faild'.mysqli_error());
}
}
}
else
{
echo "You haven't wrote anything, write it first";
}
}?>
答案 0 :(得分:2)
的Habib,
PHP的一些指导:
$button = isset($_POST["submit"])?$_POST["submit"]:"";
这一行的作用是对$button
变量应用一个值,第一个检查是 IF isset($var)
THEN (用?
)将$var
的值应用于$button
变量。
冒号:
然后设置如果 IF 的布尔查询(true / false)返回false,则应用第二个值,在这种情况下为{{1}的空字符串}。
这是代码最小化,您应该了解它,但几乎不需要使用它,尤其是在学习时。
""
您对MySQLi的错误反馈应包括连接详细信息,如下所示。
替换mysqli_error($connection);
$username = $_POST['name'];
$password = $_POST['password'];
因为您想要检查它们是否已设置,但如果它们不为空,则当前它们将被设置为因为它们被设置为{{1}的值即使它们为null(可能),所以替换为:
if (isset($username) && isset($password)) {
$_POST
是否定运算符。所以上面是 IF NOT EMPTY 。 if(!empty($username) && !empty($password)){
这是不可能达到的,因为如果字符串长于10并且字符串短于3,则设置为<,这显然是不可能的。将!
替换为if (strlen($username) > 10 && strlen($username) < 3) {
或而不是 AND 。
我个人认为&&
不是最好的方式,而是检查||
是否确认从此提交按钮提交此表单(值为HTML表单中设置的值)。
isset($_POST['submit'])
这很好用,但是你真的需要对SQL注入攻击和SQL安全做一些研究。阅读How can I prevent SQL injection in PHP?作为开始。在PHP MySQL学习开始时学习这一点非常重要。
还研究PDO数据库连接。
还要注意,当您成功保存数据库的用户名/密码时,您的脚本将不会输出任何内容。
作为一个更接近的人:
if($_POST['submit'] == 'submit')
位于页面顶部。另请参阅How do I get PHP errors to display? 答案 1 :(得分:0)
更改您的代码如下。
<?php
include "db.php";
$button = isset($_POST["submit"])?$_POST["submit"]:"";
$username = isset($_POST["name"])?$_POST["name"]:"";
$password = isset($_POST["password "])?$_POST["password "]:"";
/*Commetents*/
$button =isset($_POST["submit"])?$_POST["submit"]:"";
is similar to following code:
if(isset($_POST["submit"]))
{
$button = $_POST["submit"];
}
else
{
$button = $_POST["submit"];
}
你知道在PHP 5.4中,如果你没有为变量设置任何值,它将出现错误。这就是我们使用它的原因。如果它没有获得任何值,则会将其设置为值""
。
if($button == "submit")
表示当有人按下提交按钮时,将提交您在提交按钮值中定义的$_POST['submit']
值。
if($button == "submit")
{
if($username=="" or $password=="")
{
$error ="Username & Password can't be blank";
}
elseif(strlen($username)<3 or strlen($username) > 10 )
{
$error ="Must enter username & pass between 3 & 10";
}
else
{
$query = "INSERT INTO users (username,password) VALUES('$username','$password')";
mysqli_query($connection,$query) or die(mysqli_error());
}
}
echo $error;
希望它会对你有所帮助。