【问题标题】:if isset PHP not working?如果 isset PHP 不工作?
【发布时间】:2012-04-09 23:15:32
【问题描述】:

好的,我正在尝试设置验证码,但是输入此代码后,它会中断。

if(isset($_POST["captcha"]))
    if($_SESSION["captcha"]==$_POST["captcha"])

当我不使用它时,页面可以工作,但验证码让不正确的提交通过。

解析错误:语法错误,意外 '"',在第 71 行的 /hermes/waloraweb085/b2027/moo.lutarinet/jointest.php 中需要 T_STRING 或 T_VARIABLE 或 T_NUM_STRING

<?php

$pagetitle = "Home";

$checkrank = 0;

include ($_SERVER['DOCUMENT_ROOT'].'/header.inc.php');

ECHO <<<END

<br><br>

<b><center><i><u>DO NOT</u> USE YOUR NEOPETS PASSWORD OR PIN NUMBER!!!</b></i></center>
<p>
?>


<?php session_start() ?> 
<center><P><FORM ACTION="join.pro.php" enctype="multipart/form-data" METHOD=POST>
   <table width="393" height="188" border="0" cellpadding="0" cellspacing="0">
       <td width="150">Username</td>
       <td width="243"><input type=text name="name" value="" size=32 maxlength=15></td>
     </tr>
     <tr>
       <td>Password</td>
       <td><input type=password name="pass1" VALUE="" maxlength=15></td>
     </tr>
     <tr>
       <td>Confirm Password</td>
       <td><input type=password name="pass2" VALUE="" size=32 maxlength=15></td>
     </tr>
     <tr>
       <td>Security Code (4 Diget Number)</td>
       <td><input type=password name="security" VALUE="" size=32 maxlength=4></td>
     </tr>
     <tr>
       <td>Email Address</td>
       <td><INPUT TYPE=text NAME="email" VALUE="" SIZE=32 maxlength=100></td>
     </tr>
     <tr>
       <td height="41" colspan="2" valign="middle"><p><p><center>
         By registering an account here you agree to all

         of our <A HREF="$baseurl/tos.php">Terms and

       Conditions</A>. You can also view our <A HREF="$baseurl/privacy.php">Privacy

   Policy</A>. 
       </center></p></td>
     </tr>

<tr><td align="center">CAPTCHA:<br>
    (antispam code, 3 black symbols)<br>
    <table><tr><td><img src="captcha.php" alt="captcha image"></td><td><input type="text" name="captcha" size="3" maxlength="3"></td></tr></table>
</td></tr>
<td height="27" colspan="2" valign="middle">
         <center><input type=submit name=Submit value="Register"></center>
       </td>
</table>
</form>
<?php
if(isset($_POST["captcha"]))
if($_SESSION["captcha"]==$_POST["captcha"])
{
    //CAPTHCA is valid; proceed the message: save to database, send by e-mail ...
    echo 'CAPTHCA is valid; proceed the message';
}
else
{
    echo 'CAPTHCA is not valid; ignore submission';
}
?>


<?php



END;




include ($_SERVER['DOCUMENT_ROOT'].'/footer.inc.php');


?>

验证码.php

<?php
session_start();
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
header("Cache-Control: no-store, no-cache, must-revalidate"); 
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache"); 

function _generateRandom($length=6)
{
    $_rand_src = array(
        array(48,57) //digits
        , array(97,122) //lowercase chars
//      , array(65,90) //uppercase chars
    );
    srand ((double) microtime() * 1000000);
    $random_string = "";
    for($i=0;$i<$length;$i++){
        $i1=rand(0,sizeof($_rand_src)-1);
        $random_string .= chr(rand($_rand_src[$i1][0],$_rand_src[$i1][1]));
    }
    return $random_string;
}

$im = @imagecreatefromjpeg("http://sketchedneo.com/images/sitedesigns/captcha.jpg"); 
$rand = _generateRandom(3);
$_SESSION['captcha'] = $rand;
ImageString($im, 5, 2, 2, $rand[0]." ".$rand[1]." ".$rand[2]." ", ImageColorAllocate ($im, 0, 0, 0));
$rand = _generateRandom(3);
ImageString($im, 5, 2, 2, " ".$rand[0]." ".$rand[1]." ".$rand[2], ImageColorAllocate ($im, 255, 0, 0));
Header ('Content-type: image/jpeg');
imagejpeg($im,NULL,100);
ImageDestroy($im);
?>

请任何人帮忙?

第 71 行:if(isset($_POST["captcha"]))

第 72 行:if($_SESSION["captcha"]==$_POST["captcha"])

【问题讨论】:

  • 请在您的示例中仅包含相关代码。
  • ummmmmmmmmmmmm,第 71 行的内容 (:

标签: php


【解决方案1】:

编辑:

你错过了END;

ECHO <<<END

<br><br>

<b><center><i><u>DO NOT</u> USE YOUR NEOPETS PASSWORD OR PIN NUMBER!!!</b></i></center><p>

END; // You forgot to include this

顺便说一句,session_start() 应该是脚本中调用的第一件事,因为它需要在启动任何其他输出之前完成。

另外,尝试使用多行分支按顺序排列大括号(使其更易于扫描):

if (isset($_POST["captcha"]))
{
    if ($_SESSION["captcha"] == $_POST["captcha"])
    {
        //CAPTHCA is valid; proceed the message: save to database, send by e-mail ...
        echo 'CAPTHCA is valid; proceed the message';
    }
    else
    {
        echo 'CAPTHCA is not valid; ignore submission';
    }
}

【讨论】:

  • 我仍然收到错误消息。解析错误:语法错误,意外的'"',在第 71 行的 /hermes/waloraweb085/b2027/moo.lutarinet/jointest.php 中需要 T_STRING 或 T_VARIABLE 或 T_NUM_STRING
  • 结束后我收到此警告:session_start() [function.session-start]:无法发送会话缓存限制器 - 标头已发送(输出开始于 /hermes/waloraweb085/b2027/moo.lutarinet /jointest.php:3) 在第 30 行的 /hermes/waloraweb085/b2027/moo.lutarinet/jointest.php 中,即:
  • Sessions_start 在顶部,已修复所有错误 :) 谢谢。我还在学习PHP。我想你不能再帮我一次吗?我的验证码不起作用,我输入了一个错误代码,它仍然注册
  • 很高兴我能回答这个问题。请勾选此答案,然后询问有关验证码不起作用的 问题。这样,不同的主题就被分成不同的问题,方便其他人在未来搜索他们的特定问题。
【解决方案2】:
if(isset($_POST["captcha"]))
if($_SESSION["captcha"]==$_POST["captcha"])
{
    //CAPTHCA is valid; proceed the message: save to database, send by e-mail ...
echo 'CAPTHCA is valid; proceed the message';
}
else
{
    echo 'CAPTHCA is not valid; ignore submission';
}

如果...,您首先缺少一个大括号

if(isset($_POST['captcha']))
{
    if($_SESSION['captcha'] == $_POST['captcha'])
    {
        //CAPTHCA is valid; proceed the message: save to database, send by e-mail ...
        echo 'CAPTHCA is valid; proceed the message';
    }
    else
    {
        echo 'CAPTHCA is not valid; ignore submission';
    }
}
// Need another else for first if here or keep it closed if you don't have an else

【讨论】:

  • 解析错误:语法错误,意外的 T_ENCAPSED_AND_WHITESPACE,在第 72 行的 /hermes/waloraweb085/b2027/moo.lutarinet/jointest.php 中需要 T_STRING 或 T_VARIABLE 或 T_NUM_STRING,即: if(isset($_POST ['验证码'])) {
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-31
  • 1970-01-01
  • 1970-01-01
  • 2012-12-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多