ログインと登録に関してちょっとしたことをしたのですが、文字でログインするとエラーが発生します
先にコードを入力してください
これはコントローラ配下のアクションにログインするためのコードです
<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 エラーが報告されました
。
この質問は本当に奇妙です...