PDA

View Full Version : سوال: مشکل در تابع session_start()



amirrezaq
چهارشنبه 21 خرداد 1393, 12:55 عصر
با عرض سلام و خسته نباشید
کد صفحه به شرح زیر هستش:

<?php
session_start();
$link=mysqli_connect("localhost","elmcityi_admin","8521444789","elmcityi_admin");
$password=trim($_POST['pass']);
$sql="SELECT * FROM `users` WHERE `pass`='".$password."'";
$result=mysqli_query($link,$sql) or die("خطا در انجام درخواست");
$userExist=mysqli_num_rows($result);
if($userExist>0)
{
$_SESSION['login']=$password;
header("location:welcome.php");
}
else
{
printf("نام کاربری یا گذرواژه اشتباه است.");
}
mysqli_close($link);
?>

زمانی که این کد اجرا میشه، تابع اجرا میشه ولی خطاهای زیر رو میده و به صفحه دیگه هم منتقل نمیشه:


Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/elmcityi/public_html/blog/admin/login-ok.php:2) in /home/elmcityi/public_html/blog/admin/login-ok.php on line 3

Warning: Cannot modify header information - headers already sent by (output started at /home/elmcityi/public_html/blog/admin/login-ok.php:2) in /home/elmcityi/public_html/blog/admin/login-ok.php on line 12



خوب دوستان مشکل چیه؟؟
با تشکر

sooren_66
چهارشنبه 21 خرداد 1393, 14:33 عصر
mysqli چرا؟

SA_Developer
چهارشنبه 21 خرداد 1393, 14:36 عصر
http://barnamenevis.org/showthread.php?118779-%D9%84%D8%B7%D9%81%D8%A7-%D8%A8%DA%AF%DB%8C%D9%86-%DA%86%D8%B1%D8%A7-%D8%A7%DB%8C%D9%86-%D8%AE%D8%B7%D8%A7-%D8%B1%D9%88-%D9%85%DB%8C%D8%AF%D9%87

http://barnamenevis.org/showthread.php?180614-%D8%AE%D8%B7%D8%A7-%D9%87%D9%86%DA%AF%D8%A7%D9%85-%D8%AF%D8%A7%DB%8C%D8%B1%DA%A9%D8%AA-%D8%B5%D9%81%D8%AD%D9%87-Header-outpiut-Error

http://barnamenevis.org/showthread.php?405052-%D8%A7%D8%B1%D9%88%D8%B1-%D8%AF%D8%B1-%D9%87%D8%AF%D8%B1-%D8%B3%D8%A7%DB%8C%D8%AA-php

http://barnamenevis.org/showthread.php?15602-%D9%85%D8%B4%DA%A9%D9%84-%D8%A8%D8%A7-session

http://barnamenevis.org/showthread.php?385731-%D9%85%D8%B4%DA%A9%D9%84-headers-already-sent

http://barnamenevis.org/showthread.php?208474-Warning-session_start%28%29

http://barnamenevis.org/showthread.php?334733-%D9%85%D8%B4%DA%A9%D9%84%DB%8C-%D8%A8%D9%87-%D9%86%D8%A7%D9%85-headers-already-sent

http://barnamenevis.org/showthread.php?408706-%D8%AE%D8%B7%D8%A7%DB%8C-headers-already-sent

http://barnamenevis.org/showthread.php?295732-Warning-headers-already-sent-by

http://barnamenevis.org/showthread.php?363192-Cannot-modify-header-information-headers-already-sent-by

http://barnamenevis.org/showthread.php?353702-%D8%AE%D8%B7%D8%A7-%D8%AF%D8%B1-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-session

http://barnamenevis.org/showthread.php?332807-%D8%A7%D8%B1%D9%88%D8%B1session_start%28%29

http://stackoverflow.com/a/8028987

SA_Developer
چهارشنبه 21 خرداد 1393, 14:37 عصر
mysqli چرا؟
مشکلش چیه؟

MMSHFE
چهارشنبه 21 خرداد 1393, 15:25 عصر
خوب دوستان مشکل چیه؟؟
با تشکر
تاپیک پرسشهای تکراری رو مطالعه کنید: لینک (http://barnamenevis.org/showthread.php?356992-%D9%BE%D8%B1%D8%B3%D8%B4%D9%87%D8%A7%DB%8C-%D8%AA%DA%A9%D8%B1%D8%A7%D8%B1%DB%8C)

amirrezaq
چهارشنبه 21 خرداد 1393, 15:45 عصر
مشکل اول حل شد...
با تشکر...
ضمنا خطای دوم رو چکار کنم؟
Warning: session_start() [function.session-start (http://blog.am-shahabi.ir/admin/function.session-start)]: Cannot send session cache limiter - headers already sent (output started at /home/elmcityi/public_html/blog/admin/welcome.php:1) in /home/elmcityi/public_html/blog/admin/include/connect.php on line 2

MMSHFE
چهارشنبه 21 خرداد 1393, 15:54 عصر
تمام فایلهاتون رو با کدگذاری UTF-8 without BOM ذخیره کنید.

sooren_66
چهارشنبه 21 خرداد 1393, 19:13 عصر
مشکلش چیه؟

من با mysql کار میکنم نمیدونم mysqli چیه؟و چرا i داره؟

MMSHFE
چهارشنبه 21 خرداد 1393, 20:29 عصر
اون افزونه منسوخ شده و الان از MySQLi استفاده میشه که i یعنی improved و البته اینها افزونه های PHP برای اتصال به MySQL هستن و ربطی به خود دیتابیس ندارن. افزونه mysql منسوخ شده و افزونه mysqli برای اتصال به دیتابیس MySQL استفاده میشه. البته تا وقتی سرورها به نسخه 5.4 ارتقا پیدا نکنن فقط در این خصوص یه هشدار میدن که اونم قابل مخفی کردنه ولی بعد از ارتقا کلاً از کار میفته. پس از الان آماده باشین و کدهاتون رو اصلاح کنید.

SA_Developer
چهارشنبه 21 خرداد 1393, 20:30 عصر
من با mysql کار میکنم نمیدونم mysqli چیه؟و چرا i داره؟
توابع *_mysql دیگه خیلی قدیمی شدن و php هم گفته دیگه ازش استفاده نکنید بجاش از توابع جدید *_mysqli باید استفاده کنید که مزیت های خیلی بیشتری نسبت به *_mysql داره.
MySQLi =MySQL Improved
جست و جو کنید مطلب خیلی زیاد در موردش هست.

SA_Developer
چهارشنبه 21 خرداد 1393, 20:35 عصر
اون افزونه منسوخ شده و الان از MySQLi استفاده میشه که i یعنی improved و البته اینها افزونه های PHP برای اتصال به MySQL هستن و ربطی به خود دیتابیس ندارن. افزونه mysql منسوخ شده و افزونه mysqli برای اتصال به دیتابیس MySQL استفاده میشه. البته تا وقتی سرورها به نسخه 5.4 ارتقا پیدا نکنن فقط در این خصوص یه هشدار میدن که اونم قابل مخفی کردنه ولی بعد از ارتقا کلاً از کار میفته. پس از الان آماده باشین و کدهاتون رو اصلاح کنید.

تشکر بخاطر "ربطی به خود دیتابیس ندارن".
بعضا فکر میکنن Mysqli یه دیتابیس جدیده.

amirrezaq
چهارشنبه 21 خرداد 1393, 22:16 عصر
من دیگه دارم...
از بس رو این کد چند ساعته ور رفتم...
مشکلش حل نمیشه...
فایل رو هم با همون یونیکد ذخیره کردم...
ولی نشد....
نمیدونم مشکل کجاست که حتی به ساده ترین کد یعنی شروع یک جلسه هم ایراد میگیره...


$password=trim($_POST['pass']);
$sql="SELECT * FROM `users` WHERE `pass`='".$password."'";
$result=mysqli_query($link,$sql) or die("خطا در انجام درخواست");
$userExist=mysqli_num_rows($result);
if($userExist>0)
{
session_start();
$_SESSION['login']=$password;
header("location:welcome.php");
}
else
{
printf("نام کاربری یا گذرواژه اشتباه است.");
}

اصلا انگار نه انگار که من دارم دستور شروع جلسه رو میدم...
حتی جلسرو شروع هم نمیکنه...

این هم کد چک کردن وجود جلسه:

if (isset($_SESSION['login']))
{
$link=mysqli_connect("localhost","*","*","*");
}
else
{
header('location:login.php');
}

اینم ارورش:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/elmcityi/public_html/blog/admin/login-ok.php:2) in /home/elmcityi/public_html/blog/admin/login-ok.php on line 10

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/elmcityi/public_html/blog/admin/login-ok.php:2) in /home/elmcityi/public_html/blog/admin/login-ok.php on line 10

ممنون میشم کمکم کنید...
با تشکر

cpuram
چهارشنبه 21 خرداد 1393, 23:36 عصر
login-ok.php on line 10 هدر ست کردی؟

lord_viper
پنج شنبه 22 خرداد 1393, 08:45 صبح
login-ok.php on line 10 هدر ست کردی؟
اون هدر برای redirect هست البته بعدش حتما باید die بزاره
چون اگه قابلیت redirect مرورگر غیر فعال بشه بقیه محتوی سایت بعد از این دستور نمایش پیدا میکنه
http://aaronsaray.com/blog/2013/01/08/it-is-important-to-use-die-after-a-header-redirect-heres-why/

این مشکل تو وردپرس واسه من زیاد پیش میاد
اول کدت یه ob_start() بزار درست میشه قبل از session_start()

MMSHFE
پنج شنبه 22 خرداد 1393, 09:12 صبح
میگم به این قسمت که با قلم درشت نوشتم دقت کردین:
UTF-8 without BOM

amirrezaq
پنج شنبه 22 خرداد 1393, 15:32 عصر
دوستان اون تابع ob_start رو قبلا گذاشتم حل نشد...
ضمنا آقای شهرکی بله...
برای اطمینان با نوت پد ++ هم چک کردم...
با همون یونیکده...
راستی جناب شهرکی یه سوال...
منظورتون از تمام صفحات یعنی تمام صفحات شرکت کننده تو همون پروسه ی دیگه...
درسته؟
یا نه صفحات دیگه سایت رو هم با همون یونیکد بزارم؟؟؟