用挪威语字母验证登录

时间:2012-04-01 14:49:36

标签: php mysql character-encoding

我在php网站上遇到这个非常讨厌的问题我正在编程并希望利用stackoverflow的知识来帮助克服它。

登录验证的逻辑就是这样。

  1. 您注册并发送邮件给您。邮件中包含一个包含您的用户名和ID的URL,该ID将与您在表中的用户名下存储的ID匹配。 (通过$ _GET)

  2. 如果函数找到具有匹配ID和用户名的1行,则该用户将验证更改为“是”。

  3. 一切正常,直到你使用æø或å的名字。像Jørgen一样。邮件验证功能已更改为适应此目的,将网址转换为

    www.myphppage.com/index.php?login=j%F8rgen&id=62185505683314306498

    我已经制作了检查sql打印登录的php函数,它在html页面上正确打印为Jørgen。在程序 mysql workbench 中,名称也会在表格中正确显示。

    如果我尝试database中选择*。user_reg WHERE login ='{$ login}'但是,它不匹配且mysql_num_rows返回0。虽然我尝试使用相同的id,但它匹配并返回1它应该。我认为错误必须在某个地方的查询中。

    我的索引页面使用 charset = iso-8859-1 我的数据库使用Latin-1_general ci

    感谢帮助

    -Johann

3 个答案:

答案 0 :(得分:0)

使用base64_encode()函数。

$url='www.myphppage.com/index.php?ver='.base64_encode($login.'|'.$id);

然后......

$data=explode('|',base64_decode($_GET['ver']));
$login=$data[0];
$id=$data[1];

答案 1 :(得分:0)

用于调用mysql服务器的char-set是什么?

我有一个类似的问题,utf-8中的php脚本,utf-8中的生成页面,utf-8中的数据库,但是latin_1(iso-8859-1)中脚本和mysql之间的连接。

初始化PDO对象后,我使用SET character_set_connection命令解决了它。 charset-connection

答案 2 :(得分:0)

问题是这些字符不会被PHP的魔术引号自动地解码,但是其他URL编码的部分已被解码,因此使用rawurldecode可能会破坏消息。但是,如果您可以访问传递的原始名称值(完全编码),则可以使用rawurlencode()来获取角色。

但是magic quotes can only be disabled at the system level,所以这是一个全有或全无的交易(很糟糕)。