PDA

View Full Version : مشکل با headeer و session در هاست



nimja145
دوشنبه 20 تیر 1390, 00:25 صبح
سلام
من لوکال با wamp server کار میکنم و هیچ مشکلی با header و sesson ندارم.
ولی موقعی که سایتم رو روی هاست آپلود میکنم این دو تا دستور کار نمیکنه.
دستور header را با دستور
echo("<script>location.href='index.php';</script>");
جایگزین کردم. ولی session نمیدونم چیکار کنم.!!!! بعد از redirect به صفحه نمیتوانم متغیر session رو که در صفحه قبل بهش دادم بخونم

as13851365
دوشنبه 20 تیر 1390, 02:59 صبح
اگه از هاست رایگان استفاده می کنی در بعضی از آنها نمی تونی از یک سری دستورات استفاده بکنی

در غیر این صورت کدی که نوشتی و یا متن خطایی که می ده بنویس

nimja145
دوشنبه 20 تیر 1390, 08:16 صبح
نه هاست رایگان نیست.
مثلا این کد صفحه login :



<!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">
<head>
<link href="css/login.css" rel="stylesheet" type="text/css" />
<?php include '../pages/source/base.php';

?>

<title><?php echo ($title);?></title>
</head>
<body>
<div id="frame">
<div id="top_frame"></div>
<div id="center_frame">
<span style="font-size:16px; font-:inherit; color:Black;" >ورود به سامانه مدیریت وبسایت <br /></span>
<br />
<hr />

<?php
session_start();
unset($_SESSION['validuser']);
$error="";
if(isset($_POST['username']) && isset($_POST['password']))
{
$username=$_POST['username'];
$password=$_POST['password'];

$result=mysql_query("SELECT * FROM `users` where user='$username' and pass='$password'",$server);
if (mysql_num_rows($result)>0)
{$_SESSION['validuser']=$username;header('location: pages/index.php');exit();}else{$error="نام کاربری و یا رمز عبور نادرست میباشد";}

}
?>
<form method="post" action="index.php">
<table id="table_login">

<tr >
<td class=table_right>نام کاربری:</td>
<td><input id="username" name="username" class=input type=text /></td>
<td rowspan=3 style="width:130px; background-image: url('images/login_p.png'); background-repeat:no-repeat;background-position:center; "></td>
</tr>
<tr >
<td class=table_right>رمزعبور:</td>
<td><input id="password" class=input name="password" type=password /></td>
</tr>
<tr><td class=table_right></td><td Id="submit" ><input type="submit" value="ورود به سامانه" style="width:100px; height:30px;font-family:Tahoma;" /></td></tr>

</table>
<?php echo $error ?>
</form>
</div>
<div id="bottom_frame""></div>
</div>
</body>
</html>

as13851365
دوشنبه 20 تیر 1390, 10:43 صبح
این کدی که دادی نباید هم کار کنه
یکی از اصلهای استفاده از سیشن اینه که قبل از ارسال خروجی به مرورگر استارت بشه

یعنی شما باید دستور session_start(); رو در ابتدای فایل قرار بدید

nimja145
دوشنبه 20 تیر 1390, 14:11 عصر
همیه این کارها رو امتحان کردم . حتی از ob_start() هم استفاده کردم.ولی....
مشکل من اینه که لوکال همه چیز درسته ولی رو هاست این طور میشه...

Keramatifar
دوشنبه 20 تیر 1390, 17:15 عصر
دوست عزیز
کدت رو به این شکل تغییر بده


<?php
session_start();
unset($_SESSION['validuser']);
$error="";
if(isset($_POST['username']) && isset($_POST['password']))
{
$username=$_POST['username'];
$password=$_POST['password'];
$result=mysql_query("SELECT * FROM `users` where user='$username' and pass='$password'",$server);
if (mysql_num_rows($result)>0)
{
$_SESSION['validuser']=$username;
header('location: pages/index.php');
exit();
}
else
{
$error="نام کاربری و یا رمز عبور نادرست میباشد";
}
}
?>
<!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"><head><link href="css/login.css" rel="stylesheet" type="text/css" />
<?php include '../pages/source/base.php'; ?>
<title><?php echo ($title);?></title></head><body><div id="frame"><div id="top_frame"></div><div id="center_frame"><span style="font-size:16px; font-:inherit; color:Black;" >ورود به سامانه مدیریت وبسایت </span> <hr />
<form method="post" action="index.php"><table id="table_login"> <tr > <td class=table_right>نام کاربری:</td> <td><input id="username" name="username" class=input type=text /></td> <td rowspan=3 style="width:130px; background-image: url('images/login_p.png'); background-repeat:no-repeat;background-position:center; "></td> </tr> <tr > <td class=table_right>رمزعبور:</td> <td><input id="password" class=input name="password" type=password /></td> </tr> <tr><td class=table_right></td><td Id="submit" ><input type="submit" value="ورود به سامانه" style="width:100px; height:30px;font-family:Tahoma;" /></td></tr> </table><?php echo $error ?></form></div><div id="bottom_frame""></div></div></body></html>[/PHP



در ضمن اگر مکانیزم لاگین برنامت به این شکل است سریعا اصلاحش کن، به شدت مستعد SQL Injection است، شما نباید بصورت مستقیم مقادیری که از متد پست می آیند را درون کوئری قرار بدی و به دیتابیس ارسال کنید

nimja145
دوشنبه 20 تیر 1390, 18:31 عصر
میشه راهنمایی بکنید که باید چه کار کنم؟ در ضمن من این کد جاوا رو هم گذاشتم به خاطر این که این شلوغ نشه برداشتم:



<script type='text/javascript'>
function formValidator() {
// Make quick references to our fields
var user = document.getElementById('username');
var pass = document.getElementById('password');
if (notEmpty(user, "لطفا نام کاربری خودرا وارد نمایید")) {
if (isAlphabet(user, "نام کاربری خود را به زبان انگلیسی وارد نمایید")) {
if (notEmpty(pass, "لطفا رمز عبور خودرا وارد نمایید")) {

return true;

}
}
}
return false;
}

function notEmpty(elem, helperMsg) {
if (elem.value.length == 0) {
alert(helperMsg);
elem.focus(); // set the focus to this input
return false;
}
return true;
}
function isAlphabet(elem, helperMsg) {
var alphaExp = /^[a-zA-Z]+$/;
if (elem.value.match(alphaExp)) {
return true;
} else {
alert(helperMsg);
elem.focus();
return false;
}
}
</script>