PDA

View Full Version : مبتدی: این اخطار از چی ناشی میشه



lost_z
پنج شنبه 23 مرداد 1393, 15:02 عصر
سلام دوستان این ارور از کجا ناشی میشه چطور برطرفش کنم؟





Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home3/.../public_html/.../desktop/abc.php:1) in /home3/.../public_html/.../desktop/abc.php on line 3

arash691
پنج شنبه 23 مرداد 1393, 15:08 عصر
در ابتدای فایلی که از شسن می خوای استفاده کنی این دستور رو قرار بده :


if(!isset($_SESSION)){
session_start();
}

lost_z
پنج شنبه 23 مرداد 1393, 15:44 عصر
گذاشتم ولی اثری نداشت

persiansh
پنج شنبه 23 مرداد 1393, 15:50 عصر
اینطوری استفاده کن ببین چی میشه.
<?php
session_start();
ob_start();
?>
<!DOCTYPE

lost_z
پنج شنبه 23 مرداد 1393, 15:55 عصر
آقا درست شد.دلیلش چی بود؟ ob_start(); چی کار میکنه؟؟

persiansh
پنج شنبه 23 مرداد 1393, 16:07 عصر
زماین که دارین header به سمت کلاینت ارسال میکنید اگه یک کاراکتر هم قبلش چاپ کرده باشین خطای headers already sent میگرید ! حالا header هی چی باشه ! sessionو cookie و Location و هر header دیگه ای خطا میگیرید ! اما چون عموما این دستورات قبل از ارسال کاراکتر ها استفاده میشه مگه اینکه نوع کدنویسی شخص بد باشه ! خطایی دریافت نمیشه ! و استفاده ازش هم بیهوده هستش. اما حالا فکر کنین ما میخواهیم خروجی که دراین تولید میکنیم را برای cache کردن و عدم process مجدد اسکریپت روی hard ذخیره کنیم ! حالا مجبوریم ob_start کنیم .
که مشکل شما به خاطر cache بود.

lost_z
پنج شنبه 23 مرداد 1393, 16:09 عصر
یه بحثی . من از چه تابعی استفاده کنم که از نفوذ از طریق sql injection
مقابله کنم؟

برای متن های سایتم از این استفاده کزدم ولی متن هامو بهم میریزه:


function quote_smart($value)
{

if(!is_numeric($value)) {
if(get_magic_quotes_gpc()) $value = stripslashes($value);
return "'" .mysql_real_escape_string($value) . "'";
}
else return $value;

}

persiansh
پنج شنبه 23 مرداد 1393, 16:18 عصر
برای sql injection میتونی از pdo استفاده کنی .
http://php.net/manual/en/book.pdo.php
برای xss از تابع htmlspecialchars()
http://php.net/manual/en/function.htmlspecialchars.php

persiansh
پنج شنبه 23 مرداد 1393, 16:19 عصر
برای sql injection میتونی از pdo استفاده کنی .
http://php.net/manual/en/book.pdo.php
برای xss از تابع htmlspecialchars()
http://php.net/manual/en/function.htmlspecialchars.php
داخل انجمن جستجو کنی مطالب زیادی پیدا می کنی.
موفق باشی

arash691
پنج شنبه 23 مرداد 1393, 16:46 عصر
وقتی از
ob_start(); استفاده میکنید در انتها ی فایل
ob_end_flush(); رو قرار بدین