PDA

View Full Version : از بین رفتن خودکار محتوای متغیر



qqq2qqq
جمعه 12 فروردین 1390, 20:00 عصر
سلام من یه کدی نوشتم که متاسفانه بعد یه کد زیر محتوای session از بین میره


$_SESSION['CodeMelli2']= $_REQUEST['code'];


request['code'] از ضفحه قبل می یات که جاوی کد ملی هست


$y=$_REQUEST['code'];

تو این خط بالا وقتی echo $y کنم کد ملی رو چاپ می کنه و لی از خط پایین به بعد دیگه session خالی مشه و متغیر $y هم خالی میشه


if(isset($_POST['NewPass1']) && isset($_POST['NewPass2']))

دقیقا از این خط به بعد دیگه session['codemelli2'] و $y خالی میشه و مقداری نداره
کد های کامل تر رو پایین می ذارم


<?php
session_start();
$_SESSION['CodeMelli2']= $_REQUEST['code'];
?>
<body>
<form name="ChangePassAs" method="post" action="ChangePassAs.php">
رمز عبور جدید<input type="password" name="NewPass1" /><br />
تکرار رمز عبور<input type="password" name="NewPass2" /><br />
<input type="submit" value="تغییر" />
<input type="hidden" name="code" />
<?php
include('Config.php');
print $_SESSION['CodeMelli2']. '<br>';
$y=$_REQUEST['code'];
if(isset($_POST['NewPass1']) && isset($_POST['NewPass2']))
{
print_r($y);
if (isset($_POST['NewPass1']) || isset($_POST['NewPass2']))
{

echo $_SESSION['CodeMelli2'].'<br>';



if ($_POST['NewPass1']==$_POST['NewPass2'])
{
$e=$_SESSION['CodeMelli2'];
$SqlUpdate="UPDATE ostad SET Password='".md5($_POST['NewPass1'])."' WHERE CodeMelli='".$y."'";
mysql_query($SqlUpdate);

echo mysql_error();
?><script language='javascript' >window.alert("عمل تغییر رمز عبور با موفقیت ثبت شد");</script>
<?php }
else
{
?> <script language='javascript' >window.alert("عدم تطابق رمزهای عبور");</script>
<?php }



}
}
?>


</form>
</body>
</html>



فبل if اول session مقدار داره ولی بعد if از دیگه مقدارش از بین می ره
در ضمن این رو هم بگم که request['code'] از صفحه قبل مقدارش رو می گیره که شامل کد ملی هست.لطفا یکی راهنماییم کنه خیلی نیاز دارم بهش

qqq2qqq
شنبه 13 فروردین 1390, 09:46 صبح
سلام کسی نیست واسه این مشکل ما راه حلی داشته باشه!!!

Dead Space
شنبه 13 فروردین 1390, 10:45 صبح
کد شما وارد if میشه ؟
من کد شما رو چک کردم مشکلی نداره اما
در فایل config.php ؟ این فایل رو شما include کردید در داخل این فایل چه کدی قرار داره ؟

qqq2qqq
شنبه 13 فروردین 1390, 23:50 عصر
کدهای معمولی واسه کانکت شدن
اما با این کدها اجرا نمی شه ، اره وارد if نمی شه اما تو sql کد ملی قرار نمی گیره

امید امرایی
یک شنبه 14 فروردین 1390, 11:16 صبح
سلام

دلیل این اشکال اینه که شما در خط اول

$_SESSION['CodeMelli2']= $_REQUEST['code'];
نشست CodeMelli2 رو در هر حال مقدار دهی می کنید.
بدلیل اینکه فرم شما به صفحه ایی بدون QueryString هدایت می شه، مقدار ['REQUEST['code_$ در ارسال بعدی تهی می شه.

برای حل مشکل توجه کنید که توی فرم شما فیلدی به نام code قرار داده شده که مقداری بهش داده نشده.
شما می تونید مقدار ['REQUEST['code_$ رو در درون اون قرار بدید تا مجددا به همون صفحه ارسال بشه.
ضمن اینکه با انجام این کار دیگه نیاز به استفاده از Session هم ندارید.

شکل نهایی برنامه به این شکل می شه :


<form name="ChangePassAs" method="post" action="test1.php">
رمز عبور جدید<input type="password" name="NewPass1" />
تکرار رمز عبور<input type="password" name="NewPass2" />
<input type="submit" value="تغییر" />
<input type="hidden" name="code" value="<?php echo $_REQUEST['code']; ?>"/>

<?php
$y = $_REQUEST['code'];
echo "<br>outside if: $y<br>";
if(isset($_POST['NewPass1']) && isset($_POST['NewPass2'])){
echo "first if: $y<br>";
if (isset($_POST['NewPass1']) || isset($_POST['NewPass2'])){
echo "second if: $y<br>";
}
}
?>
</form>