Heim >Backend-Entwicklung >PHP-Tutorial >PHP-Nachrichtensystem (2)

PHP-Nachrichtensystem (2)

WBOY
WBOYOriginal
2016-08-08 09:27:531517Durchsuche

1. Nach der Bestimmung des Gesamtrahmens unter Bezugnahme auf das Vorherige (Zusammenfassung des MVC-Rahmens) lauten die Standardparameter der Anfrage:

<span>//</span><span>默认请求首页:
    </span><span>//</span><span>P=front
    </span><span>//</span><span>C=fIndex
    </span><span>//</span><span>A=show</span>

1.1 Suchen Sie die Aktion unter dem Controller fIndexController:

<span>//</span><span>首页展示动作</span>
        <span>public</span><span> function showAction()
        {
            </span><span>//</span><span>防止恶意调用</span>
            $<span>this</span>-><span>checkAuthority();
            </span><span>//</span><span>不需要具体模型,直接载入模版</span>
            require CUR_VIE_PATH.<span>'</span><span>index.html</span><span>'</span><span>;
        }</span>

2. Die Verhinderung böswilliger Anrufe wird in fast allen Modellen verwendet und ist daher im Basismodell enthalten

<span>/*</span><span>
     * 防止恶意调用方法,适用于全部方法
     </span><span>*/</span>
    <span>protected</span><span> function checkAuthority()
    {
        </span><span>if</span>(!defined(<span>'</span><span>IN_NG</span><span>'</span><span>))
        {
            exit(</span><span>"</span><span>you no authority</span><span>"</span><span>);
        }
    }</span>
Rufen Sie diese Methode jederzeit auf

3. Lehnen Sie die niedrigere Version von PHP ab, da sie immer ausgeführt wird, und fügen Sie sie direkt in die ursprüngliche Datei Framework.class.php ein.

4.1 Machen Sie CSS zu einer Include-Datei

Jede Seite muss CSS importieren, was wirklich mühsam ist. Definieren wir eine Datei title.inc.html.

Aber jede Seite hat ein anderes CSS, sodass Sie eine Konstante definieren können, um diese Seite zu beweisen.

define('SCRIPT','index');

<title>Your Title</title>
    <?<span>php
        require </span><span>'</span><span>application/view/front/title.inc.html</span><span>'</span>
    ?>
</head>

wobei title.inc.html-Code

<link rel=<span>"</span><span>shortcut icon</span><span>"</span> href=<span>"</span><span>favicon.ico</span><span>"</span> />
<link rel=<span>"</span><span>stylesheet</span><span>"</span> type=<span>"</span><span>text/css</span><span>"</span> href=<span>"</span><span>public/front/css/1/basic.css</span><span>"</span> />
<link rel=<span>"</span><span>stylesheet</span><span>"</span> type=<span>"</span><span>text/css</span><span>"</span> href=<span>"</span><span>public/front/css/1/<?php echo SCRIPT?>.css<span>"</span> />
5.2 Registrierungsseite register.html erstellen

<span>参数请求为:
    请求注册页
        P</span>=<span>front
        C</span>=<span>fRegister
        A</span>=show
Der Code lautet:

<div id=<span>"</span><span>register</span><span>"</span>>
        <h2>会员注册</h2>
        <form method=<span>"</span><span>post</span><span>"</span> action=<span>"</span><span>post.php</span><span>"</span>>
            <dl>
                <dt>请认真填写一下内容</dt>
                <dd><span>
                    用 户 名:</span><input type=<span>"</span><span>text</span><span>"</span> name=<span>"</span><span>username</span><span>"</span> <span>class</span>=<span>"</span><span>text</span><span>"</span> />(*<span>必填,至少两位)
                </span></dd>
                <dd><span>
                    密 码:</span><input type=<span>"</span><span>password</span><span>"</span> name=<span>"</span><span>password</span><span>"</span> <span>class</span>=<span>"</span><span>text</span><span>"</span> />(*<span>必填,至少六位)
                </span></dd>
                <dd><span>
                    确认密码:</span><input type=<span>"</span><span>password</span><span>"</span> name=<span>"</span><span>notpassword</span><span>"</span> <span>class</span>=<span>"</span><span>text</span><span>"</span> />(*<span>必填,同上)
                </span></dd>
                <dd><span>
                    密码提示:</span><input type=<span>"</span><span>text</span><span>"</span> name=<span>"</span><span>passt</span><span>"</span> <span>class</span>=<span>"</span><span>text</span><span>"</span> />(*<span>必填,至少两位)
                </span></dd>
                <dd><span>
                    密码回答:</span><input type=<span>"</span><span>text</span><span>"</span> name=<span>"</span><span>passd</span><span>"</span> <span>class</span>=<span>"</span><span>text</span><span>"</span> />(*<span>必填,至少两位)
                </span></dd>
                <dd><span>
                    性 别:</span><input type=<span>"</span><span>radio</span><span>"</span> name=<span>"</span><span>sex</span><span>"</span> value=<span>"</span><span>男</span><span>"</span> <span>checked</span>=<span>"</span><span>checked</span><span>"</span> /><span>男
                    </span><input type=<span>"</span><span>radio</span><span>"</span> name=<span>"</span><span>sex</span><span>"</span> value=<span>"</span><span>女</span><span>"</span> /><span>女
                </span></dd>
                <dd <span>class</span>=<span>"</span><span>face</span><span>"</span>>
                    <img src=<span>"</span><span>public/front/face/m01.gif</span><span>"</span> alt=<span>"</span><span>头像选择</span><span>"</span><span>
                        onclick</span>=<span>"</span><span>javascript:window.open('face.php','face','width=400,height=400,top=0,left=0')</span><span>"</span> />
                </dd>
                <dd><span>
                    电子邮件:</span><input type=<span>"</span><span>text</span><span>"</span> name=<span>"</span><span>email</span><span>"</span> <span>class</span>=<span>"</span><span>text</span><span>"</span> />
                </dd>
                <dd><span>
                    Q Q :</span><input type=<span>"</span><span>text</span><span>"</span> name=<span>"</span><span>qq</span><span>"</span> <span>class</span>=<span>"</span><span>text</span><span>"</span> />
                </dd>
                <dd><span>
                    主页地址:</span><input type=<span>"</span><span>text</span><span>"</span> name=<span>"</span><span>url</span><span>"</span> <span>class</span>=<span>"</span><span>text</span><span>"</span> value=<span>"</span><span>http://</span><span>"</span> />
                </dd>
                <dd><span>
                    验 证 码:</span><input type=<span>"</span><span>text</span><span>"</span> name=<span>"</span><span>yzm</span><span>"</span> <span>class</span>=<span>"</span><span>text yzm</span><span>"</span> />
                </dd>
                <dd>
                    <input type=<span>"</span><span>submit</span><span>"</span> <span>class</span>=<span>"</span><span>submit</span><span>"</span> value=<span>"</span><span>注册</span><span>"</span> />
                </dd>
            </dl>
        </form>
    </div>

5.3 Klicken Sie auf den Avatar, um das Avatar-Auswahlfeld aufzurufen:

<img src=<span>"</span><span>public/front/face/m01.gif</span><span>"</span> alt=<span>"</span><span>头像选择</span><span>"</span><span>
                        onclick</span>=<span>"</span><span>javascript:window.open('face.php','face','width=400,height=400,top=0,left=0')</span><span>"</span> />

Diese Seite speichert 64 Avatar-Seiten, die über eine Array-Schleife aufgelistet werden können

<?php <span>foreach</span> (range(<span>1</span>,<span>9</span>) <span>as</span> $number) {?>
<dd><img src=<span>"</span><span>face/m0<?php echo $number?>.gif<span>"</span> /></dd>
<?php }?>
6. Daten übermitteln

Um Daten an diese Seite zu übermitteln, muss ein Name-Wert-Paar erstellt werden, um festzustellen, ob die Daten übermittelt wurden.

?action=<span>register
也可以设计一个隐藏字段来做名值对
</span><<span>input
type</span>=<span>"</span><span>hidden</span><span>"</span><span>
name</span>=<span>"</span><span>action</span><span>"</span><span>
value</span>=<span>"</span><span>register</span><span>"</span>
/>
6.1 Überprüfen Sie den Bestätigungscode

Der Zweck des Bestätigungscodes besteht darin, böswillige Registrierungen und einige standortübergreifende Angriffe mit Formularfälschung zu verhindern.
Der Bestätigungscode wird in der Sitzung gespeichert, anhand derer festgestellt werden kann, ob das aktuelle Formular gesendet wird. Nach einer einmaligen Aktualisierung ändert sich der Bestätigungscode mit
, wodurch auch mehrfache böswillige Registrierungen verhindert werden können.

<span>if</span> (!($_POST[<span>'</span><span>yzm</span><span>'</span>] == $_SESSION[<span>'</span><span>code</span><span>'</span><span>])) {
_alert_back(</span><span>'</span><span>验证码有误,请重新输入!</span><span>'</span><span>);
}</span>
6.2. Daten akzeptieren

<span>设计变量,将数据提交出来赋值给变量
$_username
</span>=<span>
$_POST[</span><span>'</span><span>username</span><span>'</span><span>];
也可以通过一个数组来存放提交过来的值
$_clean
</span>=<span>
array();
$_clean[</span><span>'</span><span>username</span><span>'</span><span>]
</span>=<span>
$_POST[</span><span>'</span><span>username</span><span>'</span>]
6.3 Verschiedene Einschränkungen und Filterung

<span>1.首先,必须去掉两边的空格
$_string </span>= trim($_string);

<span>2.其次长度限制
</span><span>if</span> (mb_strlen($_string,<span>'</span><span>utf-8</span><span>'</span>) < $_min_num || mb_strlen($_string,<span>'</span><span>utf-8</span><span>'</span>) > $_max_num)

<span>3.敏感字符限制
$_char_pattern </span>= <span>'</span><span>/[<>\'\"\ \ ]/</span><span>'</span><span>;
</span><span>if</span> (preg_match($_char_pattern,$_string)) {}

<span>4.敏感用户名限制
$_mg[</span><span>0</span>] = <span>'</span><span>22</span><span>'</span><span>;
$_mg[</span><span>1</span>] = <span>'</span><span>11</span><span>'</span><span>;
$_mg[</span><span>2</span>] = <span>'</span><span>33</span><span>'</span><span>;
</span><span>foreach</span> ($_mg <span>as</span><span> $value) {
$_mg_string .</span>= <span>'</span><span>[</span><span>'</span>.$value.<span>'</span><span>]</span><span>'</span>.<span>'</span><span>\n</span><span>'</span><span>;
}
</span><span>if</span><span> (in_array($_string,$_mg)) {
_alert_back($_mg_string.</span><span>'</span><span>以上敏感用户名不得注册!</span><span>'</span><span>);
}</span>

<span>5.转义输入,有效防止SQL 注入问题
</span><span>//</span><span>mysql_escape_string();
</span><span>//</span><span>addslashes()</span>
<span>return</span> mysql_real_escape_string($_string); <span>//</span><span>这个mysql_是需要连接数据库的</span>
Das Obige stellt das PHP-Nachrichtensystem (2) vor, einschließlich einiger Aspekte des Inhalts. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn