регистрация пользователя в php и sql. фарси вход

это мой первый PHP-код, и он, вероятно, полон проблем 🙂
Я хочу зарегистрировать информацию людей, посещающих мой сайт. Моя главная проблема заключается в том, что слова FARSI в SQL не зарегистрированы правильно, и он показывает неправильные символы.
Я пытался использовать N для создания Unicode, но у меня не получилось. Может быть, я использую это неправильно.
Также я попытался дать каждому уникальный идентификатор, но я не мог понять, как.
Мое сопоставление sql для частей FARSI — utf8 persi ci. Я использую phpmy admin, и я попытался сделать 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="https://web-answers.ru/wp-content/uploads/2019/02/takhfif.jpg" alt="تخفیف" />';
} else {
echo "خطا در ثبت نام.لطفا دوباره تلاش کنید";
}
}

}?>
</body>

</html>

0

Решение

убедитесь, что вы используете utf8.
измените параметры сортировки базы данных на utf8_general. это должно работать.
У меня была такая же проблема, когда я учил php.

0

Другие решения

Всем привет и спасибо за ответы.
если бы нашел решение моей проблемы. для тех, у кого такая же проблема, установите для параметров сортировки значение utf8 general или unicode. Но вы также должны установить свой вклад в utf8. Я вставил следующий код для этого.
Я надеюсь, что это помогает, и если у вас были проблемы, пожалуйста, спросите
Я использую mysqli, но обычное подключение mysql практически одинаково.
$con = mysqli_connect("localhost","db_user","db_pass","db_name");
после подключения к БД используйте этот код:
mysqli_set_charset($con,"utf8");

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector