0

このコードでエラーが発生するため、PC で実行できません。これをコード チェッカーに入れると、予期しない T 文字列のエラーがあると言われました。ただし、コードのさまざまな部分を引用符で囲むなど、これを解決する方法を調べようとしましたが、違いはありません。

特に、電子メール アドレス フィールドが空である場合の "If" ステートメントです。あるコード チェッカーは、'Enter' という単語は予期しないものであると教えてくれました。

<?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 ) ;  }



}


?>    
4

2 に答える 2

2

次のコード行では:

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

クロージングの前に'aを配置することで、クロージングを実際に回避しています。\これにより、コードの残りの部分が、定義しようとしている文字列の続きであると見なされます。

\\最初のバックスラッシュを実際にエスケープするdouble に置き換えて、意図したとおりに文字列を定義する必要があります。

$url = rtrim( $url , '^\\' ) ;
于 2013-10-14T00:39:02.567 に答える