繁体   English   中英

在php中创建登录/注册系统,但在mysql数据库phpmyadmin中未显示任何内容

[英]Creating Login/register system in php but nothing shows in mysql database phpmyadmin

所以实际上,问题是我需要一个登录/注册系统,并支持我写的内容,并且可以正常运行,并且注册工作正常,除非当我尝试创建帐户时,我写出了所有需要的内容并创建了它,然后说“ ve成功注册! 但是,当我去检查数据库时,没有新的数据通过id用户名传递,依此类推,但是我没有错误地连接到数据库或其他任何东西,当我尝试登录时,我无法提示没有从数据库中注册的数据。 我还检查了两次数据库名称,在我认为的代码中没有错,或者它在php中有点新。

如果有人希望我可以在skype上添加他,或者您可以检查teamviewer,如果您更喜欢我需要此修复程序,请!!

数据库图片: http : //shrani.si/f/1f/pO/3sIbCuUk/brez-naslova.png无法直接发布图片

数据库服务器

Server: 127.0.0.1 via TCP/IP
Server type: MySQL
Server version: 5.6.14 - MySQL Community Server (GPL)
Protocol version: 10
User: root@localhost
Server charset: UTF-8 Unicode (utf8)

网络服务器

Apache/2.4.7 (Win32) OpenSSL/1.0.1e PHP/5.5.6
Database client version: libmysql - mysqlnd 5.0.11-dev - 20120503 
PHP extension: mysqli Documentation

这是我的register.php文件

echo "<h1>Sign Up</h1>";

$submit = @$_POST['submit'];

//form data
$fullname = strip_tags(@$_POST['fullname']);
$username = strip_tags(@$_POST['username']);
$password = strip_tags(@$_POST['password']);
$confirmpassword = strip_tags(@$_POST['confirmpassword']);
$date = date("Y-m-d");

if($submit)
{
//check for existance
    if($fullname&&$username&&$password&&$confirmpassword)
    {
        if($password==$confirmpassword)
        {
            if (strlen($username)>25||strlen($fullname)>25)
            {
                echo "Lenght of username or full name is too long!"; 
            }
            else
            {
                if(strlen($password)>25||strlen($password)<6)
                {
                    echo "Your password must be between 6 and 25 characters long!";
                }
                else
                {
                    //register the user
                    //encrypt password
                    $password = md5($password);
                    $confirmpassword = md5($confirmpassword);
                    //connect to databases
                    $connect = mysql_connect("localhost", "root", "");
                    mysql_select_db("login");

                    $queryreg = mysql_query("INSERT INTO users VALUES   ('','$fullname','$username','$password','$date'");

                    die("You've succsessfully registered! <a href='index2.php'>Click here to return to the login page!</a>");

                }
            }
        }
        else
        {
            echo "Your passwords do not match!";
        }
    }
    else
    {
        echo "Please enter all fields!";
    }
}

?>


<p>
<form action="register.php" method="POST">
    <table>
        <tr>
            <td>
            Full Name: 
            </td>
            <td>
                <input type="text" name="fullname" value="<?php echo $fullname?>">
            </td>
        </tr>
        <tr>
            <td>
            Username: 
            </td>
            <td>
                <input type="text" name="username" value="<?php echo $username ?>">
            </td>
        </tr>
        <tr>
            <td>
            Password: 
            </td>
            <td>
                <input type="password" name="password">
            </td>
        </tr>
        <tr>
            <td>
            Confirm Password: 
            </td>
            <td>
                <input type="password" name="confirmpassword">
            </td>
        </tr>
    </table>
    <p>
        <input type="submit" name="submit" value="Create Account"> 
    </p>
</form>

多数民众赞成在我index2.php我命名为index2.php因为我arleady有1 index.php

<head>
    <title>Login Session</title>
</head>

<body>

    <form method="POST" action="login.php">
        Username: <input type="text" name="username"><br/>
        Password: <input type="password" name="password"><br/>
            <input type="submit" name="submit" value="Log in">
            <a href="register.php">Create An Account</a>
            <a href="index.php">Domov</a>
    </form>


</body>

这是login.php

session_start();

$username = $_POST['username'];
$password = $_POST['password'];

if ($username&&$password)
{
$connect = mysql_connect("localhost", "root", "") or die("Couldn't connect to host!");
mysql_select_db("login") or die("Couldn't find database!");

$query = mysql_query("SELECT * FROM users WHERE username ='$username'");

$numrows = mysql_num_rows($query);
if ($numrows!=0)
{
    while ($row = mysql_fetch_assoc($query))
    {
        $dbusername = $row['username'];
        $dbpassword = $row['password'];
    }

    if($username==$dbusername&&md5($password)==$dbpassword)
    {

        $_SESSION['username']=$username;
        header("Location: member.php");


    }
    else
    {
        echo "Wrong password!";
    }
}
else
{
    die("That user hasn't been created!");

}   
}

else 
{
    echo "Username and password must be entered!";   
}

和member.php

session_start();

if ($_SESSION['username'])
    echo "Hello, ".$_SESSION['username']."!<br/><a href='logout.php'>Sign Out";
else 
{
        header("Location: index2.php");
}

我认为您正在尝试插入没有有效主键的记录。 使用null代替''作为主键

$queryreg = mysql_query("INSERT INTO users VALUES (null,'$fullname','$username','$password','$date'");

您还可以使用die(mysql_error());查看查询中是否存在任何错误die(mysql_error()); 查询后。

很重要

应该使用MD5哈希密码,这是非常脆弱和不安全。 请改用bcrypt 另外,您不应该使用mysql_ *函数,因为它们已被弃用,请改用mysqli

你的错误


1.连接

连接线应为:

 $db = mysql_connect("localhost", "root", "" ,"login") or trigger_error(mysql_error());

代替:

$connect = mysql_connect("localhost", "root", "");
                mysql_select_db("login");

---摘要-----将其保持一行并始终在可能的情况下声明错误


2.插入数据库

首先,您应指定应在哪些列中插入哪些内容

例如

 $new_user= mysqli_query("INSERT INTO userinfo (id,firstname,lastname) VALUES ('','firstname','$lastname')");

说明:上面的代码指出将存储在变量firstname和lastname中的值插入firstname和column lastname列中。id的值保留为空,因为我们希望它自动递增

其次

如果脚本未在数据库中插入数据,则应使用if .... else条件终止该脚本


好的,因为您清楚地知道您的php扩展名是mysqli,所以只需将mysql更改为mysqli注意:如果您的连接行在同一文件中,而不是在另一个文件中,则应在sql行之前包含连接变量

例如:

$search=mysqli_query($db,"select * from userinfo where ......

其中$ db是保存连接脚本的变量

好吧,我会建议一些事情。

@字段中的@符号没有用: http : //us3.php.net/manual/en/language.operators.errorcontrol.php

为$ password和$ confirmpassword使用strip_tags没有意义。 您正在md5中对它们进行哈希处理。 我建议您使用mcrypt: http : //php.net/mcrypt

$password = md5($password);

$confirmpassword = md5($confirmpassword);

在: $queryreg = mysql_query("INSERT INTO users VALUES ('','$fullname','$username','$password','$date'");

在查询中提供列名称,例如:

$queryreg = mysql_query("INSERT INTO users (fullname, username, password, date) VALUES ('$fullname','$username','$password','$date'");

  • 您无需提供空格作为id即可让MYSQL使用AUTOINCREMENT。
  • 检查列值类型的日期,将其作为字符串传递。

尝试首先解析您对数据库的插入。

暂无
暂无

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

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