繁体   English   中英

PHP / MySQL - 在按钮上更新数据库/运行PHP脚本单击

[英]PHP/MySQL - Update Database/Run PHP Script on Button Click

我在PHP中有一个“注册”页面,我希望在单击HTML按钮时运行该脚本。

PHP基本上检查是否所有字段都已填满,检查密码和电子邮件确认是否相同并保存到数据库。

这是代码:

<?php
$Name = isset($_POST['Name']);
$Surname = isset($_POST['Surname']);

$Username = isset($_POST['Username']);

$Email = isset($_POST['Email']);
$C_Email = isset($_POST['C_Email']);

$Password = isset($_POST['password']);
$C_Password = isset($_POST['c_password']);

$SecQ = isset($_POST['SecQ']);
$SecA = isset($_POST['SecA']);


$con = mysql_connect('localhost', 'admin', 'storefile1234');
mysql_select_db ("storefile");

$check_username = mysql_query("SELECT FROM users WHERE username = '$Username'");
$check_email = mysql_query("SELECT FROM users WHERE Email = '$Email'");


if (!$con)
        {
        die('Could not connect: ' . mysql_error());
        }

if ($Name == null || $Surname== null || $Username == null || $Password == null || $C_Password == null || $Email == null || $C_Email == null || $SecQ == null || $SecA == null ) {

    echo "Missing details. Please enter all fields.";


} else {

    if(mysql_num_rows($check_username) != 0 && mysql_num_rows($check_email) != 0)
            {
            echo "Username/Email already exists";
            }
            if  ($Email == $C_Email && $Password == $C_Password) {

                $query = "INSERT INTO users (Username, Name,Surname, Password, Email, SecQ, SecA) VALUES ('NULL', ".$Username."', ".$Name."', ".$Surname."', ".$Password."', ".$SecQ."', ".$SecA."', ".$Email.')"';

                mysql_query($query) or die ('Error registering.');

                echo "Greetings, ".$Name.", you have been registered. ";

    }  else {

        echo "Error registering your account. Please try again.";
            }

 }


?>

还有,推荐吗?

每当我运行此页面时Missing details. Please enter all fields. Missing details. Please enter all fields. 显示,没有输入任何细节。

你怎么做到这一点?

你想通过isset($_POST['Username']);获取值isset($_POST['Username']); 并喜欢这个功能......
但是文档说: Returns TRUE if var exists and has value other than NULL, FALSE otherwise.

所以检查true ,坚果null 然后转发你的POST数据。

你可以这样做:

$Name = isset($_POST['Name']) ? mysql_real_escape_string($_POST['Name']) : null;


PS请再次。 不要使用mysql_*函数。 他们已被弃用
看看PDO (或mysqli_*)

你误用isset

尝试这样的事情:

$Name = null;
if (isset($_POST['Name'])) {
    $Name = $_POST['Name'];
}

isset仅用于检查是否设置了值。

有关在首次加载页面时打印该消息的问题,请使用array_key_exists函数测试用户是否已经提交了某些内容,然后再检查是否有任何字段为空。 像这样的东西:

if (array_key_exists('Name', $_POST) || array_key_exists('Surname', $_POST) || ... ) 
    if ($Name == null || $Surname== null || ... ) 
        echo "Missing details. Please enter all fields.";

观察:你不能将isset函数用于同一目的,因为根据php文档,它“确定变量是否设置且不是NULL

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM