ログインと登録に関してちょっとしたことをしたのですが、文字でログインするとエラーになってしまいます。

WBOY
リリース: 2016-06-13 12:43:38
オリジナル
900 人が閲覧しました

ログインと登録に関してちょっとしたことをしたのですが、文字でログインするとエラーが発生します
先にコードを入力してください

これはコントローラ配下のアクションにログインするためのコードです

<br />
//登陆提交控制器<br />
    public function logAction()<br />
    {<br />
        //获取登录表单参数<br />
    	$userid = $this->getRequest()->getParam('userid');<br />
    	$password = $this->getRequest()->getParam('psd');<br />
    	//创建表模型并查询登录密码<br />
    	$table = new user();<br />
    	$where = 'userid ='.$userid;<br />
    	$row = $table->fetchRow($where)->toArray();<br />
    	//验证表单密码和数据库密码<br />
    	if($row['password'] == $password)<br />
    	{<br />
    		//创建全局变量session用户名id<br />
    		session_start();<br />
    		$_SESSION['userid'] = $userid;<br />
    		//显示登陆成功视图<br />
    		$this->render('logok');<br />
    	}<br />
    	else <br />
    	{<br />
    		//密码错误显示登录失败视图<br />
    		$this->render('logfailed');<br />
    	} 	<br />
    }<br />
ログイン後にコピー

これはユーザーテーブルです
-------- ---------- ----------
| ユーザーID | パスワード |
-------- ---------- ----------
| 010 | メッシ | |ロビン |
-------- ---------- ----------

まず、登録プロセス中はすべて正常に行われ、両方のレコードを正常に挿入できます

ただし、ログインするときは、最初のレコード 010
でログインすると正常に動作します。 2 番目のレコード ロビンでログイン中にエラーが発生しました!! 500 エラーが報告されました エラーが発生しました アプリケーション エラー

そして、ユーザー名をランダムに書いてフォームを送信すると、文字が含まれている場合はエラーが報告されます。文字が含まれておらず数字のみの場合は、エラーは報告されませんが、ジャンプ情報は表示されません。
まず、ユーザー名とパスワードを何気なく書いてもジャンプしないのは、fetchRowの戻り値がnullだからだと分析しました

しかし、英語の文字を書くとエラーが発生するのはなぜですか??
フォームパラメータの取得には問題がなく、テーブルモデルにも問題はないはずです
ページの文字セット、mysql 文字セット、zend Studio 文字セットも utf-8 に統一されています
$where 条件の記述が間違っていますか? しかし、番号
でログインするとジャンプは成功します。 どうしてこのような奇妙な問題が起こるのでしょうか...私は経験が浅いので、専門家にアドバイスを求めなければなりません

文字や特殊文字を含まない 010_010 のような文字列もテストしてみましたが、送信後には 500 エラーが報告されました
。 この質問は本当に奇妙です...

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート