0

ビデオ シリーズをフォローしていますが、使用しているのと同じコードが何らかの理由で機能しません。このエラーが発生しています:

警告: 8 行目の /Applications/XAMPP/xamppfiles/htdocs/projects/lr/core/functions/general.phpの foreach() に無効な引数が指定されました

私の general.php ページは次のとおりです。

<?php
function sanitize($data)    {
    return mysql_real_escape_string($data);
}

function output_errors($errors) {
    $output = array();
    foreach($errors as $error) {
        echo $error, ', ';
    }
}

私のlogin.phpページは次のとおりです。

<?php
include 'core/init.php';

if (empty($_POST) === false)    {
$username = $_POST['username'];
$password = $_POST['password']; 

if (empty($username) === true|| empty($password) === true)  {
    $errors[] = 'You need to enter a username and/or password.';
} else if (user_exists($username) === false) {
    $errors[] = 'We can\'t find that username. Have you registered?';
} else if (user_active($username) === false) {
    $errors[] = 'You haven\'t activated your account! Check your email.'; 
} else {

    $login = login($username, $password);
    if ($login === false) {
        $errors = 'That username/password combination is incorrect.';
    } else{
        $_SESSION['user_id'] = $login;
        ?>
        <meta http-equiv="refresh" content="0;url=index.php">
        <?php
        exit();
    }   
}
}else {
$errors[] = 'No data received';
}

include 'includes/overall/overall_header.php';
output_errors($errors);
include 'includes/overall/overall_footer.php';
?>

ビデオ エピソードはこちら: http://www.youtube.com/watch?v=-XvbXxqJ4xQ&list=ECE134D877783367C7しかし、同じ結果が得られません。ありがとうございました。

4

2 に答える 2

1

で処理する前に、いくつかの簡単なチェックで general.php を更新できますforeach()foreach()は配列が渡されることを期待していますが、表示されているエラーは、それが非配列または空のメンバー配列であることを示しています。

このis_array()関数は、 $errors が実際に配列であることを検証し、count()比較により、 using をループする配列メンバーが少なくとも 1 つあることを確認しますforeach()

<?php
function sanitize($data)    {
    return mysql_real_escape_string($data);
}

function output_errors($errors) {
    $output = array();
    if ( is_array( $errors) && count( $errors ) > 0 ){
        foreach($errors as $error) {
            echo $error, ', ';
        }
    }
}
于 2013-02-15T03:00:07.450 に答える
1

$errorsブランチの上で変数を適切に初期化する必要があります。

<?php
include 'core/init.php';

$errors = array(); // <-- added

if (empty($_POST) === false)    {

これがないと、関数$errorsとして暗黙的に渡されnull(通知が発生し)、null明らかに配列ではありません。

于 2013-02-15T03:02:22.170 に答える