注册和登录

时间:2016-07-24 00:59:39

标签: php html mysql sql

我现在正在反击一种奇怪的问题。我做了一个简单的登录表单,它在中途工作。你确实可以写下你的名字,但是一旦你点击提交按钮,我就会得到一些"未定义的索引:nameX"符号eventho我在函数之前为它添加了变量等。

这是sql_connection.sql的内容(你必须看到它的一部分)

/* Registration */
    $nameX = $_POST['name'];

    $query = isRegistered($_POST['name']); //this will check if they are valid or not

    if(isset($_POST['submit'])) {
        if(!empty($_POST['name'])) {
            if($query == true) {
                echo "Welcome back";
            }
        }
        else {
            echo "No accounts found";
        }
    }

function isRegistered($name) {
        global $handler;

        $query = "SELECT ID FROM players WHERE Username= '".$name."'";

        $result = mysqli_query($handler, $query);

        if(mysqli_num_rows($result) != 0) {
            while($row = mysqli_fetch_assoc($result)) {
                return true;
            }
        }
        else {
            return false;
        }
    }

这是实际的表格

<div id="login">
            <form action="includes/sql_connection.php" method="get">
                First name: <input type="text" name="name"><br>
                <input id="button" type="submit" name="submit" value="Sign-Up">
            </form>
        </div>

错误

  

注意:未定义的索引:名称在   第101行的C:\ wamp \ www \ php \ includes \ sql_connection.php

和错误行(第101行)

$nameX = $_POST['name'];

1 个答案:

答案 0 :(得分:0)

一些快速观察

您的表单会触发GET请求,但您的代码正在查看POST个输入。你永远不会看到任何东西。约翰康德指出了这一点。

你也有逻辑缺陷

$nameX = $_POST['name'];    
$query = isRegistered($_POST['name']);

if(isset($_POST['submit'])) {
    if(!empty($_POST['name'])) {

您先使用$_POST['name'],然后再检查它是否为空。您首先访问表单输入,然后检查以后是否有任何输入(使用isset)。当没有表单输入时,这将导致使用未定义的变量调用isRegistered。这个顺序应该颠倒过来。