• 1 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
اجرا نشدن header()
#1
سلام !
من یه همچین چیزی نوشتم ولی اجرا نمیشه ...
کد پی‌اچ‌پی:
if(isset($_GET['mod'])){$mod=trim($_GET['mod']);}
        else{
            
header('location:index.php?lang=fa&mod=home');
        } 

همچین اروری میده :

Warning: Cannot modify header information - headers already sent by (output started at /home/public_html/index.php:1) in /home/public_html/index.php on line 34


چرا؟؟؟
  پاسخ
تشکر شده توسط :
#2
سلام،
دلایل زیادی داره...
دستور ob_start(); رو در اول صفحه قرار بدید و دستور ob_end_flush(); رو هم در آخر صفحه قرار بدید.
همین فایل Index.php رو بازکنید و از تگ <?php به قبل رو پاک کنید. بر روی کلید Backspace چند ثانیه نگه دارید. بعد دوباره بنویسیدش.
نتیجه؟
وبلاگ: Yousha.Blog.ir


کد کمتر => خطای کمتر => قابل فهمتر => خوانایی بیشتر => نگهداری بهتر
  پاسخ
تشکر شده توسط :
#3
ببخشید ! دیروز که این مشکلو مطرح کردم ، خودش درست شد ، نمی دونم چطوری ! اما امروز که دوباره فایل رو آپلود کردم ، باز هم هدر رو اجرا نمی کنه ... روی لوکال جواب میده البته !
چیزهایی که گفتین هم انجام دادم ، اما همچنان مشکل داره ...
  پاسخ
تشکر شده توسط :
#4
خیلی کارم گیره این هدره ... میشه کمک کنین ؟!
  پاسخ
تشکر شده توسط :
#5
فایل Index.php و فایلهای ضمیمه شدش رو در اینجا قرار بدید.(تا قبل از خط 34)
وبلاگ: Yousha.Blog.ir


کد کمتر => خطای کمتر => قابل فهمتر => خوانایی بیشتر => نگهداری بهتر
  پاسخ
تشکر شده توسط :
#6
سلام ! این کدهای ایندکسمه
کد پی‌اچ‌پی:
<?php 
ob_start
();
define('start'1); 

include(
'function/html_function.php');
include 
'function/title.php';

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 
<head>
    <meta name="description" content="ايثار Ù¾ÙŠØ§Ù… / Ø§ÙˆÙ„ين Ù¾Ø§ÙŠÚ¯Ø§Ù‡ 
اينترنتي ØªÙØ£Ù„ Ø¨Ù‡ ÙˆØµÙŠØª Ù†Ø§Ù…Ù‡ ÙŠ Ø´Ù‡Ø¯Ø§" />
    <meta name="keywords" content="ایثار Ù¾ÛŒØ§Ù…,تفأل,فال
,وصیت Ù†Ø§Ù…Ù‡ Ø´Ù‡Ø¯Ø§,شهید ," />
    <meta name="DC.title" content="ايثار Ù¾ÙŠØ§Ù… / Ø§ÙˆÙ„ين Ù¾Ø§ÙŠÚ
¯Ø§Ù‡ Ø§ÙŠÙ†ØªØ±Ù†ØªÙŠ ØªÙØ£Ù„ Ø¨Ù‡ ÙˆØµÙŠØª Ù†Ø§Ù…Ù‡ ÙŠ Ø´Ù‡Ø¯Ø§" />
    <meta http-equiv="Content-Language" content="fa" />
    <meta http-equiv="Cache-Control" content="no-cache" />
    <meta http-equiv="Pragma" content="no-cache" />
    <meta name="Abstract" content="نامه ÙŠ Ø´Ù‡Ø¯Ø§" />
    <meta name="Link" content="http://sajade.ir" />
    <meta name="Robots" content="all, index, follow" />
    <meta name="Googlebot" content="all,index,follow" />
    <meta name="MSNbot" content="all,index,follow" />
    <meta name="Distribution" content="Global" />
    <meta name="Rating" content="General" />
    <link rel="shortcut icon" href="file.ico" />
    <link href="reset.css" rel="stylesheet" type="text/css" />
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <?php if(isset($_GET['lang'])){$lang=trim($_GET['lang']);}
        }
        if(isset(
$_GET['mod'])){$mod=trim($_GET['mod']);}
        
style($lang);
        
     
?>
    <title><?php langtitle($lang); title($lang,$mod); ?></title>
    

</head> 

توی تگ <title> تابع langtitle() رو از فایل title.php فراخوانی کردم ... این تابع اینه :

کد پی‌اچ‌پی:
function langtitle($lang){
    
        if(
$lang=='fa'){echo "ایثار پیام / ";}
        elseif(
$lang=='ar'){echo " ";}
        elseif(
$lang=='en'){echo "isarpayam -"; }
        else{
            
header('location: ?lang=fa&mod=home');    
        }


تابع هدر اجرا نمیشه Sad
  پاسخ
تشکر شده توسط :
#7
اصولآ در چنین مواقعی که دارین با get کار می کنید کار درستی هست که
بیان یه به اصطلاح لیست سفید درست کنید تا از مقادیر گرفته شده رو کنترل کنید
کد پی‌اچ‌پی:
function langtitle($lang){
    switch(
$lang){
        case 
'en':
            echo 
'en';
            break;
        case 
'ar':
            echo 
'ar';
            break;
        case 
'fa':
        default:
            echo 
'fa';
    }

یا خیلی ساده تر( البته نه خیلی )
کد پی‌اچ‌پی:
function langtitle($lang){
    if(
$lang == 'en') echo 'en';
    elseif(
$lang == 'ar') echo 'ar'
    else echo 
'fa';

با این کار شما نیاز پیدا نمی کنید که دوبار url رو با header بسازین
  پاسخ
تشکر شده توسط :
#8
سلام ! می خوام اگه کاربر یه چیزی غیر از این مقادیر رو وارد کرد برگرده به صفحه ی اصلی ... چطوری از هدر استفاده نکنم؟
  پاسخ
تشکر شده توسط :
#9
در این صورت باید header رو از کد هایی HTML خارج کنی
مثلا این میشه فایل index:
کد پی‌اچ‌پی:
<?php 
ob_start
();
define('start'1); 

include 
'function/html_function.php';
include 
'function/title.php';

isset(
$_GET['lang']) ? $lang $_GET['lang'] : $lang 'fa';
isset(
$_GET['mod']) ? $mode $_GET['mod'] : $mode 'home';
$title title($lang$mode);
if(!
$titleheader('loaction: index.php');

?>

<title><?php echo $title;?></title> 

و این هم تابع title:
کد پی‌اچ‌پی:
function title($lang,$mod){
    if(
$lang=='fa'){
        
$str 'پیام ایثار - ';
        if(
$mod=='home'$str .= 'صفحه ی اصلی';
        else return 
false;            
    }
    elseif(
$lang=='en'){
        
$str 'payame isar - ';
        if(
$mod=='home'$str .= 'home';
        else return 
false;            
    }
    elseif(
$lang=='ar'){
        
$str 'العربیه - ';
        if(
$mod=='home'$str .= 'البیت';
        else return 
false;            
    }

    return 
$str;


ولی برای مدیریت زبان برنامه روش های بهتری مرسومه که می تونی با نگاه کردن به فایل های یه برمامه آماده به طور خیلی ساده درکش کنی
  پاسخ
تشکر شده توسط : bigane
#10
این رو امتحان کنید:
کد پی‌اچ‌پی:
header("Location: http://www.google.com/"); 
  پاسخ
تشکر شده توسط :


پرش به انجمن:


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