【问题标题】:Create User Account -- php makes HTML form disappear创建用户帐户——php 使 HTML 表单消失
【发布时间】:2012-07-02 12:26:19
【问题描述】:

我正在构建一个基于 PHP 的登录/创建帐户脚本。只要文件顶部的 PHP 被注释掉/不存在,表单就会正确显示。一旦我将 php 放入文件中,表单就会消失。谁能看看他们是否找到了为什么会发生这种情况的原因?

谢谢, 马特

//编辑 所以我发现错误在于用于检查密码匹配的 if/else 语句。如果我注释掉 else 语句,页面会正确显示,一旦注释掉,我就会得到一个空白页面。我什至注释掉了 mysql_query() 并且只是输入了一个简单的回声,没有运气。

$db_found2 = conServer();

if($db_found2) {
    if (!empty($_POST['username']) || !empty($_POST['password']) || !empty($_POST['email']) || !empty($_POST['conpassword'])) {
        $username = $_POST['username'];
        $password = $_POST['username'];
        $conpassword = $_POST['conpassword'];
        $email = $_POST['email'];

        if ($password != $conpassword) {
            $errormsg = "";
            $passerr = "Passwords do not match!";

        }
    }
}

function conServer() {
    $user_name = ""; //not displayed for privacy purposes
    $password = ""; //not displayed for privacy purposes
    $database = ""; //not displayed for privacy purposes
    $server = "localhost";
    $table = "users";

    $db_handle = mysql_connect($server, $user_name, $password);
    $db_found = mysql_select_db($database, $db_handle);

    return $db_found;
}


?>

<html>
<head>
    <link rel=stylesheet href="login.css" />
</head>

<body class="login">
    <div id="login">

    <form id="loginform" action="create.php" method="post">
    <p>
        <label for="username">
        Username *
        <br>
        <input type="text" name="username" id="username"/><span class="error"><?php echo $errormsg; ?></span>
        </label>
    </p>

    <p>
        <label for="password">
        Password *
        <br>
        <input type="password" name="password" id="password"/><span class="error"><?php echo $errormsg; ?></span>
        </label>
    </p>

    <p>
        <label for="password">
        Confirm Password *
        <br>
        <input type="password" name="conpassword" id="password"/><span class="error"><?php echo $errormsg; ?></span><span class="error"><?php echo $passerr; ?></span>
        </label>
    </p>

    <p>
        <label for="email">
        Email *
        <br>
        <input type="text" name="email" id="email" /><span class="error"><?php echo $errormsg; ?></span>
        </label>
    </p>

    <input type="submit" id="submit" value="Go ->"/>
    </form>
    </div>
</body>
</html>

【问题讨论】:

  • 也许您需要在调用之前将函数移到顶部?而且你缺少一个“;”。
  • 我最初把它放在顶部的一个函数之外,并认为它可能导致错误,所以我将它放在一个函数中。
  • 我认为下面的答案是正确的。

标签: php html forms


【解决方案1】:

上面的脚本可能有错误导致脚本终止。如果错误报告关闭,你得到的只是一个白页。

如何启用error reporting

error_reporting(E_ALL | E_STRICT);

同时检查display_errors 设置:

ini_get('display_errors');

【讨论】:

  • 我将这两行添加到我的文件顶部,但我仍然只是得到一个空白页。
【解决方案2】:

乍一看,我看到的唯一的东西是微不足道的,缺少';'在 '$passerr = "Passwords do not match!"' 行的末尾。 请做一些调试,并在这里分享结果。 我正在考虑诸如在调用函数后回显 $db_found2 变量之类的东西,只是想知道你在哪里卡住了。

【讨论】:

  • 感谢您的建议。尝试回显 $db_found2 变量,但没有任何显示。我对此感到很困惑。我只是在学习 PHP,但是创建了一个成功的脚本,并且我以完全相同的方式完成了所有操作。嗯..
  • 我认为你的函数有错误。 mysql_select_db() 应该返回 true 或 false。继续调试,也许你使用了错误的值进行连接。使用您知道如何连接的数据库尝试此代码。考虑阅读此页面,有一些有价值的信息:php.net/manual/en/function.mysql-select-db.php
  • 我不再使用该功能。让它工作。不太确定错误是什么。我只是将整件事注释掉,然后逐行添加回声和未注释。
  • 很好,总是从大量调试开始。不过,您应该能够赞扬我的帮助。 ^^
猜你喜欢
  • 2018-08-04
  • 1970-01-01
  • 2020-10-15
  • 1970-01-01
  • 1970-01-01
  • 2013-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多