PDA

View Full Version : درباره Session کمک می خواستم لطفا"



taghavi
شنبه 17 آبان 1382, 10:43 صبح
من کد زیر را نوشته ام ولی Error می گیرد


?php

session_start(); // start or continue the session
$user = "dodell"; // initialize a variable for the user

// register the "user" variable and give output.
if (session_register("user")) {
echo("User field set to $user.");
} else {
echo("Could not set the session variable!");
}
?>

ولی با جرای اسکریپت فوق صفحه ای با محتویات زیر باز می شود:



Warning: session_start(): open(/tmp\sess_f7555d74000c81c86d38dbf59fcdc761, O_RDWR) failed: No such file or directory (2) in E:\PhpFiles\session1.php on line 3

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at E:\PhpFiles\session1.php:3) in E:\PhpFiles\session1.php on line 3

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at E:\PhpFiles\session1.php:3) in E:\PhpFiles\session1.php on line 3
User field set to dodell.
Warning: Unknown(): Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0

Warning: Unknown(): open(/tmp\sess_f7555d74000c81c86d38dbf59fcdc761, O_RDWR) failed: No such file or directory (2) in Unknown on line 0

Warning: Unknown(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0

باتشکر-تقوی

مهدی کرامتی
شنبه 17 آبان 1382, 14:14 عصر
مشکل اول مربوط به اینستکه هیچ دایرکتوری معتبری برای نگهداری فایلهای session در php وجود ندارد. اگر PHP.INI خود را چک کنید چنین خطی در آن خواهید دید:

session.save_path = /tmp
اگر چک کنید خواهید دید که چنین مسیری در محل نصب PHP وجود ندارد. برای اصلاح این مشکل یک دایرکتوری بنام C:\PHP\sessiondata بسازید. سپس در PHP.INI خط فوق را بدینصورت تغییر دهید:

session.save_path = C:\PHP\sessiondata
بدین ترتیب مشکل
Warning: session_start(): open(/tmp\sess_f7555d74000c81c86d38dbf59fcdc761, O_RDWR) failed: No such file or directory (2) in E:\PhpFiles\session1.php on line 3 حل خواهد شد.

اما درباره مشکل

Warning: Unknown(): Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0
نقل قول از راهنمای PHP:

If your script uses session_register(), it will not work in environments where register_globals is disabled.
برای رفع این مشکل 2 راه دارید. اول اینکه در PHP.INI تان register_globals را برابر On قرار دهید (بصورت پیش فرض register_globals = Off است) که این راه معمولا توصیه نمیشود.

راه دوم اینستکه بجای استفاده از تابع <span dir=ltr>session_register()</span> از متغیر <span dir=ltr>$_SESSION</span> و یا <span dir=ltr>$HTTP_SESSION_VARS</span> استفاده کنید. در این صورت برای چک کردن وجود متغیر شما در Session باید از تابع <span dir=ltr>isset()</span> استفاده کنید. مثال:

&lt;?php
session_start&#40;&#41;;
// Use $HTTP_SESSION_VARS with PHP 4.0.6 or less
if &#40;!isset&#40;$_SESSION&#91;'count'&#93;&#41;&#41; &#123;
$_SESSION&#91;'count'&#93; = 0;
echo "SESSION&#91;'count'&#93; was not set";
&#125; else &#123;
$_SESSION&#91;'count'&#93;++;
echo "SESSION&#91;'count'&#93; was set and is=$_SESSION&#91;count&#93;";
&#125;

?>

امیدوارم مشکلتان برطرف شده باشد.
در هر صورت نتیجه را به ما بگویید.

jome ramezani
یک شنبه 05 آبان 1387, 15:00 عصر
مشکل اول مربوط به اینستکه هیچ دایرکتوری معتبری برای نگهداری فایلهای session در php وجود ندارد. اگر PHP.INI خود را چک کنید چنین خطی در آن خواهید دید:

ببخشید PHP.INI کجا قرار دارد؟

s.mostafa.rahmani
یک شنبه 05 آبان 1387, 15:30 عصر
معمولاً در پوشه ويندوز (C:\Windows) يا پوشه خود PHP مثلاً : (C:\PHP)

jome ramezani
یک شنبه 05 آبان 1387, 15:48 عصر
معمولاً در پوشه ويندوز (C:\Windows) يا پوشه خود PHP مثلاً : (C:\PHP)
ببخشید مشکل من روی وب میباشد
با تشکر

morteza271
پنج شنبه 13 خرداد 1389, 17:54 عصر
آقای رمضانی مشکل شما با sessionها روی وب برطرف شد یا نه؟!
منم الان همین مشکل رو دارم و نمیدونم چیکار کنم میشه لطف کنید روششو به منم بگین تا کارم را بیفته؟!!
ممنون میشم