Php 意外的T字符串

Php 意外的T字符串,php,Php,我在这段代码中遇到了一个错误,因此它不会在我的电脑上运行。当我将它放入代码检查器时,我被告知有一个错误,它是一个意外的T字符串。然而,我试图寻找解决这个问题的方法,包括在引号中围绕代码的不同部分,但这没有什么区别 尤其是电子邮件地址字段的“If”语句为空。一个代码检查器甚至告诉我“回车”这个词是出乎意料的 <?php function load( $page = 'login.php' ) { $url = 'http://' . $_SERVER[ 'HTTP_HOST' ] .

我在这段代码中遇到了一个错误,因此它不会在我的电脑上运行。当我将它放入代码检查器时,我被告知有一个错误,它是一个意外的T字符串。然而,我试图寻找解决这个问题的方法,包括在引号中围绕代码的不同部分,但这没有什么区别

尤其是电子邮件地址字段的“If”语句为空。一个代码检查器甚至告诉我“回车”这个词是出乎意料的

<?php

function load( $page = 'login.php' )

{

$url = 'http://' . $_SERVER[ 'HTTP_HOST' ] .
               dirname( $_SERVER[ 'PHP_SELF' ] ) ;

$url = rtrim( $url , '^\' ) ;

$url .= '/' . $page ;

header( "Location: $url" ) ;
exit() ;


function validate( $dbc , $email = " , $pwd = " )

{

$errors = array() ;

if ( empty( $email ) )
{ $errors[] = 'Enter your email address.' ; }
else { $e = mysqli_real_escape_string( $dbc, trim( $email ) ) ; }

if ( empty( $pwd ) )
{ $errors[] = 'Enter your password.' ; }
else { $p = mysqli_real_escape_string( $dbc, trim( $pwd ) ) ; }

if ( empty( $errors ))
{
$q = "SELECT user_id, first_name, last_name, 
   FROM users
   WHERE email = '$e'
   AND pass = SHA1( '$p' ) " ;

$r = mysqli_query ( $dbc , $q ) ;

if ( mysqli_num_rows( $r ) == 1 )
{
$row = mysqli_fetch_array ( $r , MYSQLI_ASSOC ) ;
return array( true , $row ) ;
}
else

{ $errors[] = 'Email address and password not found.' ; } 

}

return array( false , $errors ) ;  }



}


?>    

以下代码行中的

$url = rtrim( $url , '^\' ) ;
实际上,您已经通过将一个
\
放在关闭的
\
前面逃过了关闭。这导致代码的其余部分被假定为您试图定义的字符串的延续

您应该将其替换为双精度
\\
,它实际上会转义第一个反斜杠,从而按照您的意思定义字符串:

$url = rtrim( $url , '^\\' ) ;
  • 加载函数缺少右括号:}
  • 函数验证($dbc,$email=“,$pwd=”)
    -您可能想写:
    函数验证($dbc,$email=“,$pwd=”)
    或:
    函数验证($dbc,$email=”,$pwd=”)
    -您发布代码的方式无法运行
  • 调用
    标题(“位置…
    不要
    退出();
    -使用
    返回
  • 您正在检查email/pwd是否为空并保存错误,但不更改程序流程:在这种情况下,您根本不应该调用数据库,而是应该立即显示错误
  • 更好的做法是在查询中使用而不是字符串连接-
    mysqli\u real\u escape\u string
  • 这是个人的“品味”:当你在网上发布一个问题时,试着识别代码并使其可读,进一步,在同一行中做类似于
    else{blablablabla….;}
    的事情-不遵循任何代码约定,试着接受一个代码约定并坚持它

  • 去阅读
    PHP
    escaping
    。然后修复它。正如@alfasin指出的,还有更多错误(缺少括号)感谢大家的帮助和努力,我不相信我适合PHP,但有些错误显然是我正在使用的那本书的结果,这本书还不清楚。感谢上帝,我几乎看完了这本书。