将JavaScript结果存储在Php变量中

时间:2011-07-19 08:14:13

标签: php javascript mysql

我有一些密码包含一些特殊和方法的字符,如此密码“HHE1134ƒ”如果我想用php md5()生成密码那么这不会给我正确的哈希像这样的“679b6dc6122a9c83ed31476ee82af36e”。

所以我有Java Script可以为我的密码生成正确的哈希值 但是我如何将这个值存储到mysql

我的代码如下,请帮助我。

$result = mysql_query("SELECT * FROM `table`") or die(mysql_error());

while ($row = mysql_fetch_assoc($result))
{

$user_id = $row['user_id'];
$firstname = $row['firstname'];
$lastname = $row['lastname'];
$spno = $row['spno'];
$password = $row['password'];

$tmp =  "<script type='text/javascript'> document.write(MD5('".$password."'));</script>";

$query1="UPDATE `wp_110504users` SET `user_pass` = '$tmp' WHERE `user_login` = '$user_id'";

mysql_query($query1) or die(mysql_error());
}

这会给我一个像

这样的错误
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'text/javascript'> document.write(MD5('HW72'));' WHERE `user_login` = '0' at line 1

&GT;

有人告诉我使用Ajax,请告诉我如何使用Ajax这段代码你能给我一个例子......

7 个答案:

答案 0 :(得分:3)

您无法在服务器上的PHP代码中运行JavaScript代码。 PHP解释器只解释PHP代码。

您不需要,MySQL和PHP都有md5函数来计算这些哈希值。

答案 1 :(得分:2)

Javascript在到达用户的浏览器之前不会运行。这称为客户端。

PHP是服务器端。在将网页传递给用户之前,所有PHP代码都会执行。然后,您的Javascript将在他们的自己的计算机上执行,他们的网络浏览器。

从Javascript向服务器发送内容的唯一方法是使用Ajax。你可以调查它,但我不认为你应该用你目前的两种语言的经验水平。你用它多久了?

你可以使用内置于php btw的md5()函数:http://php.net/manual/en/function.md5.php

答案 2 :(得分:1)

使用php native md5功能:

md5($password);

答案 3 :(得分:0)

在javascript到达浏览器之前解释PHP。 你不能这样做。 阅读有关AJAX的更多信息,这对您有所帮助。

BTW:你为什么用javascript生成md5哈希?

答案 4 :(得分:0)

这很正常,userpass值只是<script type...。 Javascript是客户端脚本语言,而php运行服务器端,您希望如何在服务器端解释您的md5?

你能做什么,是在发送密码之前对密码进行哈希处理,但它会让你信任访问者,你永远不应该做什么,或者只是使用php函数进行md5哈希。

答案 5 :(得分:0)

我认为您复制粘贴的代码不正确。根据错误,您尝试将$ userpass变量放在SQL语句中,但是,在代码中,您使用的是$ tmp变量,它根本没有定义。

答案 6 :(得分:0)

试试这个:

$tmp = md5($password);
$query1="UPDATE `wp_110504users` SET `user_pass` = '$tmp' WHERE `user_login` = '$user_id'";

你也可以使用MySQL功能:

$query1="UPDATE `wp_110504users` SET `user_pass` = MD5('$tmp') WHERE `user_login` = '$user_id'";