用户在php和sql中注册。波斯语输入

时间:2017-02-20 07:20:48

标签: php sql

这是我的第一个PHP代码,它可能充满了问题:) 我想注册访问我网站的人的信息。我的主要问题是sql中的FARSI字没有正确注册,它显示错误的字符。 我试图使用N来使它成为unicode,但它并不适合我。也许我错了。 此外,我尝试给每个人一个唯一的ID,但我无法弄清楚如何。 我对FARSI部件的sql排序规则是utf8 persian ci。我正在使用phpmy管理员,我试图在其中制作nvarchar,但它只提供varchar 这是我的第一个问题和第一个PHP代码所以请原谅我如果它太基本了。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Untitled 1</title>
</head>

<body>
<?php
$name = $_POST["name"];
$familyname = $_POST["familyname"];
$email = $_POST["email"];
$phone = $_POST["phone"];
$pass = $_POST["pass"];
$pass2 = $_POST["pass2"];
$id = 100;

// Remove all illegal characters from email
$email = filter_var($email, FILTER_SANITIZE_EMAIL);

// Validate e-mail
if (!filter_var($email, FILTER_VALIDATE_EMAIL) === true) {
echo("$email صحیح نمی باشد");
} else {


$con = mysqli_connect("localhost","","","register");

$name = mysqli_real_escape_string($con, $_POST['name']);
$familyname = mysqli_real_escape_string($con, $_POST['familyname']);
$email = mysqli_real_escape_string($con, $_POST['email']);
$phone = mysqli_real_escape_string($con, $_POST['phone']);
$pass = mysqli_real_escape_string($con, $_POST['pass']);
$pass2 = mysqli_real_escape_string($con, $_POST['pass2']);



mysqli_query($con,"INSERT INTO users (`name17`, `familyname17`, `email17`, `phone17`, `pass17`, `id17`) VALUES ('$name', '$familyname', '$email', '$phone', '$pass', '$id')");

$result = mysqli_query($con,"select * from users where email17 ='$email' and pass17 = '$pass' and familyname17 = '$familyname'" )
    or die("faild to query database".mysql_error());
$row = mysqli_fetch_array($result,MYSQLI_BOTH);

if (empty($name) || empty($familyname) || empty($email) || empty($phone) || empty($pass) || empty($pass2)) {
echo "لطفا اطلاعات را بطور کامل وارد فرمایید";
}
 else {
if ($row['email17']==$email && $row['pass17'] == $pass2){
echo "<body style='direction: rtl !important;'>";
echo "<b>".$row['name17']." <b>";
echo "عزیز. خوش آمدید<br> ";
echo '<img src="images/takhfif.jpg" alt="تخفیف" />'; 
} else {
echo "خطا در ثبت نام.لطفا دوباره تلاش کنید";
}
}

}



?>
</body>

</html>

2 个答案:

答案 0 :(得分:0)

确保您使用的是utf8。
将数据库排序规则更改为utf8_general。这应该工作。
当我学习php时,我遇到了同样的问题。

答案 1 :(得分:0)

大家好,感谢您的回答。 如果找到我的问题的解决方案。对于那些有相同问题的人,将collat​​ion设置为utf8 general或unicode。但是你也必须将输入设置为utf8。我插入以下代码来执行此操作。 我希望这有帮助,如果你有问题,请问。 我使用mysqli,但正常的mysql连接几乎是一样的    $con = mysqli_connect("localhost","db_user","db_pass","db_name"); 连接到db后使用此代码:     mysqli_set_charset($con,"utf8");