رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
نفرستادن اطلاعات فارسی در post
#1
سلام و خسته نباشید به دوستان عزیز
الآن دوسالی هستش که دارم php کار میکنم و اولین بار هستش که به این مشکل بر خوردم .
من یه فورم دارم که میخوام اطلاعات اون رو با post بفرستم .
حالا اطلاعاتی که میفرستم اگه انگلیسی باش میفرسته و اگه فارسی باش نمیفرسته . منظورم محتوای input هستش .
یعنی اگه انگلیسی باش متن رو اونور تو php نشون میده ولی اگه محتوا فارسی باش متغیر رو خالی میفرسته و چیزی نشون نمیده .
نظرتون در مورد این مشکل چیه ؟
تا به حال بهتون اتفاق افتاده ؟
ممنون
پاسخ
تشکر شده توسط:
#2
سلام
من با بررسی هایی که انجام دادم ، مشاهده کردم که مشکل از کدهای پایین هستش.
if(count($_POST)>0) {
    foreach($_POST as $k => $v) {
        $_POST[$k] = htmlentities($_POST[$k]);
        $_POST[$k] = strip_tags($_POST[$k]);
        $_POST[$k] = mysql_escape_string($_POST[$k]);    
        $_POST[$k] = htmlspecialchars($_POST[$k],ENT_QUOTES,'utf-8');
    }
}

به نظرتون مشکل دقیقا از کدوم تابع هستش
پاسخ
تشکر شده توسط:
#3
من دارم از ckeditor استفاده میکنم .
وقتی که از توابع بالا استفاده میکنم متنم رو به این شکل در میاره .
<p dir="RTL">سمینار عارضه یابی و آسیب شناسی فروش
به نظرتون مشکل از کجاست ؟
از چ توابعی استفاده کنم که مشکلات بالا پیش نیاد.
ممنون
پاسخ
تشکر شده توسط:
#4
باید با html_entity_decode کار کنید.
پاسخ
تشکر شده توسط:
#5
تابعتون رو هم اینطوری اصلاح کنید:
<?php
function escape($value, $type = 'html') {
    if($type == 'db') {
        if(!is_array($value) {
            $db = new mysqli('localhost', 'root', '', 'db');
            $db->set_charset('utf8');
            return $db->real_escape_string($value);
        } else {
            foreach($value as $k => $v) {
                $value[$k] = escape($v, 'db');
            }
            return $value;
        }
    } else {
        if(!is_array($value)) {
            return htmlentities(strip_tags($value), ENT_QUOTES, 'utf-8');
        } else {
            foreach($value as $k => $v) {
                $value[$k] = html_entities(strip_tags($v), ENT_QUOTES, 'utf-8');
            }
            return $value;
        }
    }
}

// usage:
$post = escape($_POST); // HTML escape
// or
$post = escape($_POST, 'db');
پاسخ
تشکر شده توسط:
#6
همیشه همزمان واسه دیتابیس و HTML اسکیپ نکنید. برحسب نیازتون یکی از دو حالت اسکیپ رو انتخاب کنید.
پاسخ
تشکر شده توسط:




کاربران در حال بازدید این موضوع: 1 مهمان