0

我正在尝试编写一个简单的 PHP 脚本:

  1. 用户访问网页并通过表单注册他们的电子邮件地址和密码(无需其他输入)。
  2. 他们的电子邮件和密码存储在数据库中,并生成随机唯一的 6 位密码并存储在电子邮件中。该引脚会根据数据库中的现有引脚进行检查,以确保它是唯一的。
  3. 然后,该密码将显示在网页上,并在确认用户提交的电子邮件和密码后显示给用户。

TL;DR 用户注册并获得一个独特的密码。

我有以下 PHP 代码,但它似乎没有在我的 WAMP 服务器上执行。它只是将 .php 页面作为原始文本返回。我是否缺少一些明显的语法或配置?

<?
if($_POST['srSubmit'] && $_POST['srEmail'] && $_POST['srPass']) {
    $conn = mysql_connect('localhost','','');
    mysql_select_db("db_test",$conn);
    while(1) {
        $pin = rand(111111,999999);
        $sel = mysql_query("SELECT * FROM formusers WHERE pin = '$pin'");
        if(mysql_num_rows($sel) != 0) { continue; }

        mysql_query("INSERT INTO formusers(email,password,pin) VALUES('".$_POST['srEmail']."','".$_POST['srPass']."','".$pin."')");
        if(mysql_affected_rows()!=-1)  {
            echo "Pin:" . $pin;
            exit;
        } else {
            echo "Existing email, try again<br />";
        }
        break;
    }

}
?>
<form method="POST" action="">
<input type="email" name="srEmail" value="" placeholder="Email" /><br />
<input type="password" name="srPass" value="" placeholder="Password" /><br />
<input type="submit" name="srSubmit" value="Register" />
</form>
4

3 回答 3

2

php 的开始标签看起来不正确:

<?
if($_POST['srSubmit'] && $_POST['srEmail'] && $_POST['srPass']) {

应该:

<?php
if($_POST['srSubmit'] && $_POST['srEmail'] && $_POST['srPass']) {
于 2013-07-22T18:08:12.187 回答
1

默认情况下不启用短 PHP 标记 ( <? ?>),这就是您的代码无法正常工作的原因。

更改您的代码以使用完整的 PHP 标记 (),以在不同的开发环境中保持一致性。

<?php // <-- notice the difference

if($_POST['srSubmit'] && $_POST['srEmail'] && $_POST['srPass']) {

但是,如果您仍想启用短标签,您可以通过修改文件short_open_tag中的指令来实现php.ini,如下所示:

short_open_tag = on

出于兼容性的原因,但建议还是避免使用它。阅读答案以了解差异。

希望这可以帮助!

于 2013-07-22T18:12:03.220 回答
0

1) 在“<”和“?”之后放置“php” 一开始

问题仍然存在?

2)听起来像一个配置的东西,好像服务器没有将您的 php 视为它必须执行的 php,但它必须显示为文本。在我问你是否确定加载了 php 模块之前,它是新安装的 WAMP 吗?它很久以前发生在我身上,我记得这是一个小配置的事情。我还记得在网上某处找到答案;)

于 2013-07-22T18:21:15.700 回答