امتیاز موضوع:
  • 1 رأی - میانگین امتیازات: 5
  • 1
  • 2
  • 3
  • 4
  • 5
تولید خطا پس از header
نویسنده پیام
web_dev آفلاین
تازه وارد

ارسال‌ها: 14
موضوع‌ها: 4
تاریخ عضویت: آبان ۱۳۹۷

تشکرها : 9
( 6 تشکر در 4 ارسال )
ارسال: #1
تولید خطا پس از header
باسلام
تو پروژه (تمرینی) من قسمتی هست برای وارد کردن یه سری اطلاعات اولیه به دیتابیس و از صفحه ای دیگه بصورت لیستی میتونم اطلاعات درج شده تو دیتابیس رو مدیریتشون کنم که تو عکس صفحه مدیریت لیست ها مشخص هست و در ادامه توضیحات شرح دادم که بعد از اضاف کردن قابلیت هدر به گزینه delete به خطایی برخوردم ...


کد php:
<?php
    $id
=$_GET['id'];
 
   DeleteMenu($id);
 
   header("location:dashbord.php?m=menu&p=list");
 
?>

کد php:
function DeleteMenu($id){
 
   $connection config();
 
   $sql "DELETE FROM menu_tbl WHERE id='$id'";
 
   $row mysqli_query($connection$sql);
 
 


----------------------------------------------------------------
و تو خطایی که نمایش میده به این خط کد داره اشاره میکنه که همه چیز درست کار میکنه و احتمالا ایراد کار باید از جای دیگه ای باشه


- پروژه ای که دارم بصورت آزمایشی و تمرینی روش کار میکنم ( کلا بر اساس function ) و با include کردن صفحات هست، و این مشکلی که الان به وجود اومده پروژه تا قبل از ایجاد header کلا درست کار میکنه یعنی تو صفحه لیست گزینه هایی که تولید کردم و گزینه حذف رو میزنم به درستی عمل میکنه و با یه back زدن به صفحه قبل آیتم مورد نظر به درستی پاک میشه ولی برای تکمیل این بخش لازمه که header ایجاد بشه و بدون رفرش رو همون صفحه باقی بمونه که متاسفانه بعداز ایجاد قابلیت header به این مشکل برخوردم و با ظاهر شدن خطا پروسه delete انجام میشه ولی هدر با این خطا مواجه میشه !

(دوستان محترم اگر توضیحات و عکس ها کفایت نکرد فایل کامل پروژه هم میتونم آپلود کنم)
۰۷-دى-۱۳۹۷, ۱۲:۴۵:۳۷
ارسال‌ها
پاسخ
تشکر شده توسط : banozk
hadikh73 آفلاین
مدیــر کـل سایـت
*******

ارسال‌ها: 1,219
موضوع‌ها: 43
تاریخ عضویت: شهریور ۱۳۹۱

تشکرها : 13642
( 14739 تشکر در 4686 ارسال )
ارسال: #2
RE: تولید خطا پس از header
سلام طبق گفته ی استاد babyy

نقل قول: اگر میخوایی با header توی php اینکارو کنی باید اول فایل ، قبل اینکه چیزی چاپ کنی ، ازش استفاده کنی ...
موفق باشید خنده بلد − بهینه شده برای ورژن جدید

۰۷-دى-۱۳۹۷, ۱۹:۴۵:۱۴
ارسال‌ها
پاسخ
تشکر شده توسط : 1نفر, babyy
web_dev آفلاین
تازه وارد

ارسال‌ها: 14
موضوع‌ها: 4
تاریخ عضویت: آبان ۱۳۹۷

تشکرها : 9
( 6 تشکر در 4 ارسال )
ارسال: #3
RE: تولید خطا پس از header
متاسفانه منظورتون رو متوجه نشدم، بنده چون تازه کار هستم نیاز به راهنمایی بیشتری دارم تا بتونم مشکل رو حل کنم.
۰۷-دى-۱۳۹۷, ۲۱:۴۶:۳۵
ارسال‌ها
پاسخ
تشکر شده توسط : banozk, babyy
nImaarek آفلاین
badtrip
****

ارسال‌ها: 144
موضوع‌ها: 61
تاریخ عضویت: مهر ۱۳۸۹

تشکرها : 310
( 317 تشکر در 108 ارسال )
ارسال: #4
RE: تولید خطا پس از header
میگن که قبل از اینکه مقداری از سیشن چاپ کنی استارتش کن.


کد:
session_start();

One Ring to rule them all, One Ring to find them, One Ring to bring them all and in the darkness bind them

Tell me, what you think about me
Give anonymous feedback
(آخرین ویرایش در این ارسال: ۰۷-دى-۱۳۹۷, ۲۲:۴۴:۳۱، توسط nImaarek.)
۰۷-دى-۱۳۹۷, ۲۲:۳۹:۴۷
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : hadikh73, web_dev, banozk, 1نفر, babyy
web_dev آفلاین
تازه وارد

ارسال‌ها: 14
موضوع‌ها: 4
تاریخ عضویت: آبان ۱۳۹۷

تشکرها : 9
( 6 تشکر در 4 ارسال )
ارسال: #5
RE: تولید خطا پس از header
دوستان عزیز
من Session_start رو تو خط کدی که ازش ایراد میگرفت، اضاف کردم و تغییری حاصل نشد. بالای صفحه هم session_start آوردم و چون صفحه بهش include_once شده بود و تو یه صفحه دیگه از session استفاده کرده بودم ، خطا گرفت (که قبلا اومده و دوبار نمیتونه باشه) !
و از یوتیوب کمک گرفتم و تو ویدئو از تابع ob_start استفاده کرد که من از این تابع تو اول صفحه ام استفاده کردم و حتی از end هم لازم نشد استفاده کنم فقط ob_start استفاده کردم. و دقیقا هم نمیدونم این تابع چه کاری رو انجام میده و ایراد کار هم از session هم نبوده !
به هر حال مشکل حل شد و دقیقا هم نفهمیدم مشکل از کجا بود.

(آخرین ویرایش در این ارسال: ۰۸-دى-۱۳۹۷, ۱۶:۴۶:۴۶، توسط web_dev.)
۰۸-دى-۱۳۹۷, ۱۶:۳۷:۳۱
ارسال‌ها
پاسخ
تشکر شده توسط : hadikh73, babyy
babyy آفلاین
بازنشسته
*****

ارسال‌ها: 3,095
موضوع‌ها: 141
تاریخ عضویت: مرداد ۱۳۸۷

تشکرها : 35081
( 26090 تشکر در 9068 ارسال )
ارسال: #6
RE: تولید خطا پس از header
ببخشید دیر پاسخ میدم

----

در http چیزی داریم بنام هدر (header) که یک سری اطلاعات رو به مرورگر میده و مرورگر هم اگر لازم دونست اونا رو اجرا میکنه و . . .

این اطلاعات یا هدر ؛ در حالت عادی و توی مرورگرا ها قابل مشاهده نیست؛ چون کاربر اصلا احتیاجی به دیدن اونا نداره؛ 

روش کار به این صورته که شما فایر فاکس رو باز میکنید و درخواست میکنید از سایت iranled.com دیدن کنید؛‌ مرورگر یه درخواست به iranled.com میفرسته و میگه چه محتویاتی داری و برای من بفرست ؛

و در حواب ؛ سرور iranled,com ؛ در ابتدا یه هدر میفرسته ؛ و بعدش html و ....

برای مثال:

کد php:
HTTP/1.1 200 OK
Date
Sun30 Dec 2018 21:48:34 GMT
Server
Apache
Expires
Sat1 Jan 2000 01:00:00 GMT
Cache
-Controlno-cachemust-revalidate
Pragma
no-cache
Set
-Cookiemybb[lastvisit]=1546206515expires=Mon30-Dec-2019 21:48:35 GMTpath=/
Set-Cookiemybb[lastactive]=1546206515expires=Mon30-Dec-2019 21:48:35 GMTpath=/
Set-Cookiesid=8b627affed98608ccf0d7eda12783ab5path=/; HttpOnly
Last
-ModifiedSun30 Dec 2018 21:48:35 GMT
Vary
User-Agent
Content
-Typetext/htmlcharset=UTF-8

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><!-- startportal -->
<
html xml:lang="persian" lang="persian" dir="rtl" xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
title>ايران ويج</title>
<!-- 
startheaderinclude -->
<
link rel="alternate" type="application/rss+xml" title="آخرین موضوع‌ها (RSS 2.0)" href="https://www.iranled.com/forum/syndication.php" />
<
link rel="alternate" type="application/atom+xml" title="آخرین موضوع‌ها (Atom 1.0)" href="https://www.iranled.com/forum/syndication.php?type=atom1.0" />
<
meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<
meta http-equiv="Content-Script-Type" content="text/javascirpt" />
<
script type="text/javascirpt" src="https://www.iranled.com/forum/jscripts/jquery.js?ver=1804"></script>

....

...
...
...
... 



همونطور که میبینید اولش (یعنی چند خط ابتدایی) هدر هست و بعدش محتویات صفحه درخواستی میاد و ... و ما همیشه در مرورگر میتونیم محتویات رو ببینیم ...



-------------


با این پیش زمینه بریم سراغ مشکل شما ؛

در php شما هم میتونید در هدر چیزی بنویسید و هم به شکل معمولی محتویات رو ایجاد کنید

یعنی وقتی که شما مینویسید :

کد php:
<html>
<?
php  echo "salam" ?>
</html> 

در واقع دارید محتوای صفحه رو تولید میکنید.


-----


اما اگر بخوایید چیزی در هدر استفاده کنید باید چکار کنید؟
جوابش استفاده از تابع header هست


برای مثال:
کد php:
<?php 
header
('web_dev: hello!');
echo 
"babyy";
?>
وقتی شما کد بالا رو اجرا کنید؛ در مرورگر فقط میبینید babyy ؛

اما اگر با نرم افزاریی که میتنند هدر رو نمایان کنند؛ نگاه کنید بهشون این رو میبینید:

کد php:
HTTP/1.1 200 OK
Date
Sun30 Dec 2018 21:59:09 GMT
Server
Apache/2.4.25 (Debian)
web_devhello!
Content-Typetext/htmlcharset=UTF-8


babyy 
همونطور که میبینید ما با دستور header تونستیم به هدر چیزی اضافه کنیم!
-----------------------
در php یه مشکل رایجی وجود داشت و اونم این هست که شما حق ندارید قبل از اینکه از تابع header استفاده کنید؛ چیزی در صفحه اصلی چاپ کنید!
(فکر میکنم این مشکل در php5 بود و الان برطرف شده ؛ مطمن نیستم!)
برای مثال :

کد php:
<?php 
echo "babyy";
header('web_dev: hello!');
?>

ابن کد باعث میشه که اون خطایی که شما بهش برخورده بودید ایجاد بشه! چرا؟
چون همونطور که گفتم همیشه اول هدر باید بیاد و بعد محتویات صفحه!
و شما با این کد کاری کردید که اول محتویات بیاد و بعد خواستید چیزی به هدراضافه کنید!
به همین علت بهتون خطا میده
چاره چیه: 
۱ - چک کنید که هیچ چیزی قبل از استفاده header چاپ نشه ؛ یعنی header قبل تز از هر چیزی که چیزی چاپ میکنه اجرا بشه..
۲ نوشتن کد هاتون بین توابع زیر ..
کد php:
ob_start( );
....
ob_end_flush(); 

این تابع باعث میشه که بافر فعال بشه و دیگه شما میتونی شماره ۱ رو رعایت نکنید ! مثلا میتونید اول چیزی echo کنید و بعدش header استفاده کنی ...

اطلاعات بیشنر:
https://stackoverflow.com/questions/4401...art-in-php

و

http://php.net/manual/en/function.ob-start.php

۳ - (اینو مطمن نیستم) استفاده از php های ورژن جدیدتر مثل ۷ ... (چون الان من دارم تست میکنم و این مشل برام پیش نمیاد..)




سوالی داشتید در خدمتم قلب
۱۰-دى-۱۳۹۷, ۰۲:۴۴:۴۷
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : hadikh73, 1نفر, web_dev, nImaarek
babyy آفلاین
بازنشسته
*****

ارسال‌ها: 3,095
موضوع‌ها: 141
تاریخ عضویت: مرداد ۱۳۸۷

تشکرها : 35081
( 26090 تشکر در 9068 ارسال )
ارسال: #7
RE: تولید خطا پس از header
(۰۷-دى-۱۳۹۷, ۲۲:۳۹:۴۷)nImaarek نوشته است: میگن که قبل از اینکه مقداری از سیشن چاپ کنی استارتش کن.


کد:
session_start();

دلیل اینکار هم اینه که این تابع هم با هدر کار میکنه


یعنی کوکی و سیشن در php  چیزی نیست جز اینکه در هدر چیزی اضافه میکنه و میفر سته به مرورگر ...
و مرگر اون مقدار رو از هدر میخونه و ذخیره میکنه و ....
۱۰-دى-۱۳۹۷, ۰۲:۴۹:۵۶
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : saeedsmk, hadikh73, 1نفر, web_dev, nImaarek


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Question [سوال] فرمول تولید id برای محصولات crafcrab 3 2,328 ۱۳-آذر-۱۳۹۴, ۰۰:۲۹:۱۵
آخرین ارسال: Ghoghnus
  دانلود نرم افزار تولید کدهای تکراری php برای برنامه نویسان phpeproject.ir 0 2,194 ۲۴-فروردین-۱۳۹۲, ۱۹:۵۴:۲۹
آخرین ارسال: phpeproject.ir
  عملكردتابع Header am3410 1 2,195 ۲۲-فروردین-۱۳۹۰, ۱۲:۰۰:۲۵
آخرین ارسال: PouriaAmid
  دستور مشابه header("Location:index.php"); hamidsina 3 5,389 ۱۱-خرداد-۱۳۸۸, ۱۴:۰۷:۳۹
آخرین ارسال: PouriaAmid
  مشکل با header Rink8 5 3,562 ۲۳-آذر-۱۳۸۷, ۲۱:۰۶:۱۲
آخرین ارسال: Rink8
  مشکل در دریافت اطلاعات به روش get و تولید به خروجی SayyedAli 3 4,239 ۰۴-خرداد-۱۳۸۶, ۰۵:۲۳:۵۹
آخرین ارسال: NabiKAZ

پرش به انجمن:


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

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS