-1

パスワードの暗号化でこの問題が発生しました。現在、md5を使用しています。これが最も安全ではないことはわかっていますが、とにかくです。

私はこのコードを持っています:

$import="INSERT into users(Username,Password,Email,first_name,last_name,phone,user_id) values('$data[0]','md5($data[1]).','$data[2]','$data[3]','$data[4]','$data[5]','$data[6]')";

さて、これはデータベースに次のような値を投稿します。

md5(A101)

どうすればこれを解決できますか?

4

6 に答える 6

2
$import="INSERT into users(Username,Password,Email,first_name,last_name,phone,user_id) 
       values('$data[0]','".md5($data[1])."','$data[2]','$data[3]','$data[4]','$data[5]','$data[6]')";

これはうまくいくはずです。

$str = "$str1";関数呼び出しでは このようなことはできないので、次のようなことをする必要があります。$str = "'" . md5($str1) . "'"

于 2012-09-11T13:21:19.543 に答える
2

関数は変数ではないため、二重引用符で囲むことはできません。

$import="
    INSERT into users
    (Username,Password,Email,first_name,last_name,phone,user_id) 
    values('$data[0]','".md5($data[1])."','$data[2]','$data[3]','$data[4]','$data[5]','$data[6]')";

PHPは二重引用符で囲まれた変数を解析しますが、可能なすべての関数を検索するわけではありません。.concat関数を使用するには、文字列を分割して値を連結する必要があります。

于 2012-09-11T13:21:32.243 に答える
1

次のような関数を呼び出すことはできません。

$import="INSERT into users(Username,Password,Email,first_name,last_name,phone,user_id) values('$data[0]','".md5($data[1])."','$data[2]','$data[3]','$data[4]','$data[5]','$data[6]')";
于 2012-09-11T13:21:38.297 に答える
1

echo "md5($data[1]).";プレーンPHPでは、関数を呼び出すと思いますか?もちろんそうではありません、それは文字列の一部です。

md5呼び出しを連結する必要があります。

"blah blah blah".md5($data[1])."more blah";
于 2012-09-11T13:22:22.090 に答える
0

実際の問題は、関数呼び出しを文字列に配置したことです。次のmd5ように、の戻り値を文字列に連結するだけです。

'" . md5($data[1]) . "'

とはいえ、このような挿入物を書かないでください$data。ユーザー入力が含まれていると危険です。

ほとんどの場合、プリペアドステートメントを使用してデータベースにデータを挿入することをお勧めします。PDO / MySQLiについて読むことを強くお勧めします。少なくとも、まだ使用していない場合は、mysql_real_escape_string

于 2012-09-11T13:22:54.680 に答える
0

1つは、文字列内で配列を使用しても機能しないことです。文字列を終了し、配列要素を連結して値を含める必要があります。md5()関数などの関数についても同じことが言えます。

試す:

$import="INSERT into users(Username,Password,Email,first_name,last_name,phone,user_id) values('".$data[0]."','".md5($data[1])."','".$data[2]."','".$data[3]."','".$data[4]."','".$data[5]."','".$data[6]."')";

これがお役に立てば幸いです。

于 2012-09-11T13:23:54.360 に答える