首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP OOP登录/注册系统

问PHP OOP登录/注册系统
EN

Stack Overflow用户
提问于 2016-07-29 20:03:46
回答 2查看 334关注 0票数 0

首先,我要感谢Codecourse的教程。一切都很好,但是我想把错误显示在我的表td中。也许是个愚蠢的问题,但我是个初学者,没有运气就试着自己解决了。

代码语言:javascript
复制
<?php
require_once 'core/init.php';

if(Input::exists()) {
    if(Token::check(Input::get('token'))) {

        $validate = new Validate();
        $validation = $validate->check($_POST, array(
            'username' => array('required' => true),
            'password' => array('required' => true)
        ));

        if($validate->passed()) {
            $user = new User();

            $remember = (Input::get('remember') === 'on') ? true : false;
            $login = $user->login(Input::get('username'), Input::get('password'), $remember);

            if($login) {
                Redirect::to('index.php');
            } else 
                echo "Incorrect username or password";

        } else {
            foreach($validate->errors() as $error) {
                echo $error, '<br>';
            }
        }
    }
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
    <body>
        <form action='' method='post'>
            <table>
                <tr>
                    <td><!-- display errors here --></td>
                    <td><!-- and/or here --></td>
                </tr>
                <tr>
                    <td><label for='username'>Username</label></td>
                    <td><input type='text' name='username' id='username'></td>
                </tr>
                <tr>
                    <td><label for='password'>Password</label></td>
                    <td><input type='password' name='password' id='password'></td>
                </tr>
                <tr>
                    <td></td>
                    <td><label for='remember'><input type='checkbox' name='remember' id='remember'>Remember me</label></td>
                </tr>
                <tr>
                    <td><input type='hidden' name='token' value='<?php echo Token::generate(); ?>'></td>
                    <td><input type='submit' value='Login'></td>
                </tr>
            </table>   
        </form>
    </body>
</html>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-29 20:17:52

如下所示:

代码语言:javascript
复制
<?php
require_once 'core/init.php';

$errors = array(); //storage variable

if(Input::exists()) {
    if(Token::check(Input::get('token'))) {

        $validate = new Validate();
        $validation = $validate->check($_POST, array(
            'username' => array('required' => true),
            'password' => array('required' => true)
        ));

        if($validate->passed()) {
            $user = new User();

            $remember = (Input::get('remember') === 'on') ? true : false;
            $login = $user->login(Input::get('username'), Input::get('password'), $remember);

            if($login) {
                Redirect::to('index.php');
            } else 
                $errors[] = "Incorrect username or password"; //add other errors in too!

        } else {
            foreach($validate->errors() as $error) {
                $errors[] = $error; //add error to storage
            }
        }
    }
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
    <body>
        <form action='' method='post'>
            <table>
                <tr>
                    <td><!-- display errors here --></td>
                    <td>
                        <?php foreach( $errors as $error ) : ?>
                            <?php echo $error; // output ?>
                        <?php endforeach; ?>
                    </td>
                </tr>
                <tr>
                    <td><label for='username'>Username</label></td>
                    <td><input type='text' name='username' id='username'></td>
                </tr>
                <tr>
                    <td><label for='password'>Password</label></td>
                    <td><input type='password' name='password' id='password'></td>
                </tr>
                <tr>
                    <td></td>
                    <td><label for='remember'><input type='checkbox' name='remember' id='remember'>Remember me</label></td>
                </tr>
                <tr>
                    <td><input type='hidden' name='token' value='<?php echo Token::generate(); ?>'></td>
                    <td><input type='submit' value='Login'></td>
                </tr>
            </table>   
        </form>
    </body>
</html>

只需将它们存储在一个变量中,然后将它们输出到您想要的地方,非常直接。

票数 1
EN

Stack Overflow用户

发布于 2016-07-29 20:16:09

将所有错误推送到数组中,然后在表中显示所有这些错误。

Array_push:http://php.net/manual/en/function.array-push.php

Array_map:http://php.net/manual/en/function.array-map.php

示例:https://gist.github.com/anonymous/d6749095ed20a995ec8697ef203d164f

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38666660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档