2013-07-22 52 views
0

上我试图写一个简单的PHP脚本:基本的PHP语法或配置?脚本不执行WAMP服务器

  1. 用户访问一个网页,登记他们的电子邮件地址,并通过形式的密码(不需要其他iinputs)。
  2. 他们的电子邮件和密码存储在数据库中,随机生成一个随机唯一的6位数字密码并存储在电子邮件中。将针对数据库中的现有引脚进行检查,以确保它是唯一的。
  3. 然后,该图钉会显示在网页上,并在确认其电子邮件和密码提交后显示给用户。

TL; DR用户注册并获得唯一的PIN。

我有以下的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> 
+1

[**请不要在新代码中使用'mysql_ *'函数**](http://bit.ly/phpmsql)。他们不再被维护[并且被正式弃用](http://j.mp/XqV7Lp)。看到[**红框**](http://j.mp/Te9zIL)?学习[*准备的语句*](http://j.mp/T9hLWi),并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [这篇文章](http://j.mp/QEx8IB)将帮助你决定哪个。如果你选择PDO,[这里是一个很好的教程](http://j.mp/PoWehJ)。 –

回答

2

PHP的开始标记看起来不正确:

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

应该是:

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

可能原因 - 短标签()默认情况下未启用。 –

+1

也请不要使用短标签,因为它们是邪恶的! :D 从5.4开始,PHP中有一个新概念:使用长开标签:''。唯一由默认启用的“short tag”([short_open_tag'设置为[不受影响](http://php.net/manual/en/language.basic-syntax.phpmode.php))为回声标签:''。 –

1

短PHP标签(<? ?>)默认情况下不启用,这就是为什么你的代码不工作。

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

<?php // <-- notice the difference 

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

但是,如果你仍然要启用短标签,你可以通过修改short_open_tag指令在php.ini文件,像这样做:

short_open_tag = on 

出于兼容性的原因,但它的建议无论如何避免使用它。阅读this答案以了解差异。

希望这会有所帮助!

0

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

问题仍然存在?

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