我在此代码中收到错误,因此无法在我的电脑上运行。当我把它放入代码检查器时,我被告知有一个错误是一个意外的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 ) ; }
}
?>
答案 0 :(得分:2)
在以下代码行中:
$url = rtrim( $url , '^\' ) ;
您实际上已经通过在其前面加'
来转发结束\
。这导致您的其余代码被假定为您尝试定义的字符串的延续。
你应该用一个实际转义第一个反斜杠的双\\
替换它,从而按照你的意思定义字符串:
$url = rtrim( $url , '^\\' ) ;
答案 1 :(得分:0)
function validate( $dbc , $email = " , $pwd = " )
- 你可能想写:function validate( $dbc , $email = "" , $pwd = "" )
或:function validate( $dbc , $email = '' , $pwd = '' )
- 您发布代码的方式无法运行!header( "Location...
后请勿exit() ;
- 使用return
mysqli_real_escape_string
is NOT bullet proof against sql-injection else {blablabla..... ;}
之类的事情 - 不遵循任何代码约定,尝试接受一个代码约定并坚持下去!