1

電子メールは一意であると識別されるため、電子メールとパスワードによる認証に使用する PHP スクリプトを作成しました。

echo "true" だけでなく、echo :: fname (名) も表示したい。どのように書くことができますか?以下は私のPHPコードです。

include "db_config.php";

$email = $_POST['email'];
$password = $_POST['password'];

$sql = "select fname,e_mail,password from user where e_mail = '$email' and pwd = '$password'  ";

$result = mysql_query($sql);

if (mysql_num_rows($result) > 0){
    echo "true";
}
else{
    echo "Login Failed";
}

このコードを記述するためのより良い方法を提案できる場合は、お知らせください。

4

3 に答える 3

2

mysql_* および mysql_real_escape_string に関するコメントを検討してください。ただし、結果を取得した後、次のようにエコーし、マニュアルから適応させます

$result = mysql_query($sql);
if (!$result) {
    echo "Could not successfully run query ($sql) from DB: " . mysql_error();
    exit;
}

if (mysql_num_rows($result) == 0) {
    echo "No rows found, nothing to print so am exiting";
    exit;
}

$row = mysql_fetch_assoc($result); 
echo "true" . $row['fname'];
于 2012-07-14T17:06:06.507 に答える
1
if (mysql_num_rows($result) > 0)
{
    echo mysql_result($result, 0);
}

- また -

SankalpまたはGDP の回答のコード。(mysql_fetch_array)
mysql_resultは、多くの結果を表示したい場合には適していません。ほんの一部の結果を表示する場合には適しています。


ところで、コードのいくつかの省略を指摘したいと思います。

  • またはを使用して、すべての$_POSTまたは$_GET変数が設定されているかどうかを確認する必要があります。issetempty

  • あなたのコードはとても安全ではありません! クエリで使用する前に、すべての変数をエスケープする必要があります。そのために使用mysql_real_escape_string()します。strip_tags()エスケープと併用することもお勧めします。


変数が設定されているかどうかを確認する例:

使用isset():

if(isset($_POST['email'])) $email = $_POST['email'];
if(isset($_POST['password'])) $password = $_POST['password'];

使用empty():

if(!empty($_POST['email'])) $email = $_POST['email'];
if(!empty($_POST['password'])) $password = $_POST['password'];
于 2012-07-14T17:12:11.900 に答える
0
$row = mysql_fetch_array($result, MYSQL_NUM)
echo $row[0];   //fname
echo $row[1];   //email 

または、MYSQL_ASSOC を使用して名前付き配列を取得し、次のように値にアクセスできます。

echo $row['fname'];
于 2012-07-14T17:12:54.503 に答える