0

私はPDOを初めて使用し、フォームから2つのPHP変数を受け取り、それらをクエリで使用する次のコードを持っています。

$loginemail = $_REQUEST['loginemail'] ;
$loginpassword = $_REQUEST['loginpassword'] ;

$logincheck = "SELECT * FROM `ft_gameusers` WHERE `email` = '$loginemail' AND `password` = '$loginpassword'";

$query = $modx->query($logincheck);

if ($query) {
    while ($row = $query->fetch(PDO::FETCH_ASSOC)) {

 echo $row['email'];

    }
}

電子メールとパスワードの変数をMySQLクエリにハードコーディングすると、正常に機能します。PHP変数としては気に入らないようです。

誰かが私が間違っていることを知っていますか?(追記:これはModX Revo内のスニペットです)

編集:フォームタグ:

<form id="loginform" action="mysite.com/formprocess" method="post">

Email:
<input type="text" id="loginemail" name="loginemail">
Password:
<input type="password" id="loginpassword" name="loginpassword">
<button type="submit">Login</button>
</form>
4

4 に答える 4

2

これは、PDO/xPDOを使用してパラメーターをバインドする方法です。

$loginemail = $_REQUEST['loginemail'] ;
$loginpassword = $_REQUEST['loginpassword'] ;

$logincheck = "SELECT * FROM `ft_gameusers` WHERE `email` = :loginemail AND `password` = :loginpassword";

$credentials = array(
    ':loginemail' => $loginemail,
    ':loginpassword' => $loginpassword,
);

$query = new xPDOCriteria($modx,$logincheck,$credentials);
if ($query->stmt && $query->stmt->execute()) {
    while ($row = $query->stmt->fetch(PDO::FETCH_ASSOC)) {
        echo $row['email'];
    }
}

http://php.net/manual/en/pdostatement.bindparam.php

于 2012-09-20T06:59:57.147 に答える
0

これから変更してみてください

<button type="submit">Login</button>

<input type="submit" id="submit" name="submit" value="Login">

この投稿では、これ<button>は常に互換性があるとは限らず、を使用して渡される変数がpost反対側で空である理由を説明しているだけかもしれません。

html5<button>要素に関する詳細情報

重要:要素をHTMLフォームで使用する場合、ブラウザーによって送信される値が異なる場合があります。Internet Explorer、以前のバージョン9は、タグとタグの間のテキストを送信しますが、他のブラウザーはvalue属性のコンテンツを送信します。この要素を使用して、HTMLフォームでボタンを作成します。

于 2012-09-19T06:27:07.627 に答える
0

このようにしてみてください

$logincheck = "SELECT * FROM `ft_gameusers` WHERE `email` = '".$loginemail."' AND `password` = '".$loginpassword.'";
于 2012-09-19T06:24:27.223 に答える
0

ゴータムはここにいると思います。実際に何が起こっているかを確認するために、いくつかの小さなテストを行います。

// trim these just in case
$loginemail = trim($_REQUEST['loginemail']);
$loginpassword = trim($_REQUEST['loginpassword']);

$logincheck = "SELECT * FROM `ft_gameusers` 
WHERE `email` = '$loginemail' AND `password` = '$loginpassword'";

// copy & run this in an sql editor:
echo $logincheck;

// then try Gautam's ~ correct the quotes syntax error after loginpassword
$logincheck2 = "SELECT * FROM `ft_gameusers` 
WHERE `email` = '".$loginemail."' AND `password` = '".$loginpassword."';
echo $logincheck;
于 2012-09-19T13:23:01.580 に答える