PDA

View Full Version : سوال: مشکل کد : ورود/خروج کاربر در نمونه زیر چیست ؟



reza10wert
سه شنبه 22 فروردین 1391, 18:32 عصر
دوستان
من هنگامی که کدهای زیر رو اجرا میکنم میگه مشکل سشن داره
میشه بگید مشکل از کجاست ؟
خیلی برام مهمه

loginform.php

<?php
if (isset($_POST['username']) && isset($_POST['password'])){
$username = $_POST['username'];
$password = $_POST['password'];

$password_hash = md5($password);

if(!empty($username) && !empty($password)){
$query = "SELECT `id` FROM `user` WHERE `username`='$username' AND `password`='$password_hash'";
if ($query_run = mysql_query($query)){
$query_num_rows = mysql_num_rows($query_run);

if ($query_num_rows == 0){
echo 'Invalid Username/Password';
}elseif ($query_num_rows==1){
$user_id = mysql_result($query_run , 0 , 'id');
$_SESSION['user_id'] = $user_id;
header ('Location : index.php');
}
}
} else {
echo 'Please type a Username/Password';
}
}
?>

<form action="<?php echo $current_file ; ?>" method="POST">
Username : <input type="text" name="username"> Password : <input type="password" name="password">
<input type="submit" Value="Login !">
</form>

core.php

<?php
ob_start();
session_start();
$current_file = $_SERVER['SCRIPT_NAME'];
?>

config.php

<?php
$mysql_host = 'localhost';
$mysql_user = 'root';
$mysql_password = '';
$mysql_db = 'db_user';

if ( !@mysql_connect($mysql_host , $mysql_user , $mysql_password) || !@mysql_select_db($mysql_db)) {
die ( mysql_error());
}

?>

index.php

<?php
require 'config.php';
require 'core.php';
echo 'For this example type : username=admin , reza and password=123<br><br>';

if (isset($_SESSION['user_id']) && !empty($_SESSION['user_id'])){
echo 'OK';
}else{
echo 'no OK';
}
require 'loginform.php';
?>

و این هم کد خطا :


Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\xampp\htdocs\index.php:1) in C:\xampp\htdocs\core.php on line 3

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\index.php:1) in C:\xampp\htdocs\core.php on line 3
For this example type : username=admin , reza and password=123

no OKUsername : Password :

MostafaEs3
سه شنبه 22 فروردین 1391, 18:52 عصر
اینو بیار اول فایل حتی قبل از Html :


session_start();

بعد فایل رو با انکودینگ utf-8 ذخیره کن درست میشه

reza10wert
سه شنبه 22 فروردین 1391, 18:55 عصر
اینو بیار اول فایل حتی قبل از Html :


session_start();

بعد فایل رو با انکودینگ utf-8 ذخیره کن درست میشه
کجا بذارم ؟
میشه دقیق بگید ؟
ممنون میشم

reza10wert
سه شنبه 22 فروردین 1391, 19:59 عصر
کسی نیست جواب بده

mostafa272
سه شنبه 22 فروردین 1391, 20:45 عصر
1- قبل از استفاده از سشن باید تابع session_start استارت بخوره!

2- فایل php هم باید با یونیکد utf-8 Without Bom ذخیره بشه!

3- چون احتمالا بعدش کلمات رو ناخوانا نشون میده باید این تگ به head اضافه بشه:


<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

4- برای پایان دادن به یک جلسه (لاگ اوت) باید سشن از بین بره که راه ساده اش استفاده از تابع session_destroy() هست

khanlo.javid
چهارشنبه 23 فروردین 1391, 16:39 عصر
کجا بذارم ؟
میشه دقیق بگید ؟
ممنون میشم

دوست عزیز این کد رو تو هرنقطه از صفحتون که بزارید اجرا میشه پس فرقی نمیکنه .



موفق باشید.

khanlo.javid
چهارشنبه 23 فروردین 1391, 16:43 عصر
دوست عزیز تو loginform.php لازم نیست که توی if از 2 isset استفاده کنی و میتونی با && داخل همون isset فیلد های دیگه رو هم چک کنی.
بعد تو فایل php.ini مقدار session auto start رو هم چک کن باید 0 باشه.





موفق باشی.