Autor Zpráva
peta
Profil *
Mam takovyto problem. Zalozim si session a ulozim do ni login a psw.
A mam ted soubor s nastavenim, kterym chci zmenit heslo. Vsechno funguje, do DB mi to ulozi, jenomze session mi to ukonci, zkratka odloguje mne.

Soubor - formular (v a-head je session start a pak mam kontrolu, zda je login a heslo v DB -> stav $logged=1)
==========
<? $where='setup'; include("./a-head.php"); ?>

<?
if($logged===1)
{
include('a-store.php');
}
?>


<div class="formreg">

<form name="f1" action="<?=$fn1?>zsetup.php" method="post" onsubmit="return validate(this)">
<fieldset>
<legend><?=$lng['m2_'.$where]?></legend>

<table align="center">
<tr valign="top">
<td><?=$lng['i_Skin']?></td>
<td>
<?
$t="\n".'<select name="userSkin">';
foreach ($skins as $key => $value)
$t.="\n".'<option value="'.$key.'"'.($row[$z.'skin']==$key?' selected="selected"':'').'>'.$value[0].'</option>';
$t.="\n</select>\n";
echo $t;
?>
<input type="text" name="userSkinPath" value="<?=$row['game_skinpath']?>" />
</td>
</tr>
<tr valign="top">
<td><?=$lng['s_Lang']?></td>
<td>
<?
$t="\n".'<select name="userLang">';
foreach ($lang as $key => $value)
$t.="\n".'<option value="'.$key.'"'.($row[$z.'lang']==$key?' selected="selected"':'').'>'.$value[0].'</option>';
$t.="\n</select>\n";
echo $t;
?>
</td>
</tr>
<tr valign="top">
<td><?=$lng['i_Gamename']?></td>
<td><input type="text" name="userName" value="<?=$row[$z.'name']?>" /></td>
</tr>
<tr valign="top">
<td><?=$lng['i_NewPassword']?></td>
<td><input type="password" name="userPsw2" /></td>
</tr>
<tr valign="top">
<td><?=$lng['i_NewPassword']?> *</td>
<td><input type="password" name="userPsw3" /></td>
</tr>
<tr valign="top">
<td><?=$lng['i_Mail']?></td>
<td><input type="text" name="userMail" value="<?=$row['user_mail']?>" /> [Preposlat klic]</td>
</tr>
<tr valign="top">
<td><?=$lng['a_Userinfo']?></td>
<td><textarea name="userInfo" rows="5" cols="39"><?=$row['user_info']?></textarea></td>
</tr>
</table>
<center>
<table><tr><td>
<?=$lng['i_Password']?>
<input type="password" name="userPsw1" />
</td></tr></table>
<input type="reset" value="<?=$lng['b_Reset']?>" class="butt" />
<input type="submit" value="<?=$lng['b_Submit']?>" class="butt" />
</center>
</fieldset>
</form>

</div>

</body>
</html>

==============
a soubor, ktery mi dela problem

<?
ob_start();
session_start();
$login = $_SESSION['login'];
$psw = $_SESSION['psw'];

include("./pp_option.php");

$where="setup";
$chyba='';

/* ban ip ? */
$ip=getIP();
$i=0;$i=PPfindIP($tb1,$ip);
if($i===0)
{

/* Nacteni a kontrola udaju */
if(count($HTTP_POST_VARS))
{
$u['Skin'] = $_POST['userSkin'];
$SkinPath = $_POST['userSkinPath'];
$u['Lang'] = $_POST['userLang'];
$u['Name'] = $_POST['userName'];
$Psw1 = $_POST['userPsw1'];
$Psw2 = $_POST['userPsw2'];
$Psw3 = $_POST['userPsw3'];
$u['Mail'] = $_POST['userMail'];
$u['Info'] = $_POST['userInfo']; /* = addslashes($u['Info']) */
}
$Psw1 = md5($login.$Psw1);
if ($Psw1===$psw)
{

$u['Skin'] = substr($u['Skin'],0,1);
$u['Skin'] = Ereg_Replace("[^0-9]","",$u['Skin']);

$u['Lang'] = substr($u['Lang'],0,3);
$u['Lang'] = Ereg_Replace("[^a-zA-Z0-9]","",$u['Lang']);

$u['Name'] = substr($u['Name'],0,32);
$u['Name'] = Ereg_Replace("[^a-zA-Z0-9]","",$u['Name']);

$Psw2 = ($Psw2==$Psw3)?$Psw2:"";
$Psw2 = substr($Psw2,0,16);
$Psw2 = Ereg_Replace("[^a-zA-Z0-9]","",$Psw2);

$u['Mail'] = substr($u['Mail'],0,255);
if (!EReg("@",$u['Mail']) ) $u['Mail']="";
$u['Mail'] = Ereg_Replace("@","\@",$u['Mail']);

$u['Info'] = HTMLSpecialChars($u['Info']);

$datum = date("Y-m-d H:i:s",time());


$i=1;
foreach ($u as $key => $value)
{if ($value==="" || $value===" ") $i=0;}

if ($i===1)
{
/* vlozeni zaznamu do databaze */
if ($Psw2!=="")
{
$Psw2 = md5($login.$Psw2);
// $_SESSION['psw'] = $Psw2;
// session_destroy();
// session_start();
// $_SESSION['login'] = $login;
// $_SESSION['psw'] = $Psw2;
$Psw2 = "`user_psw` = '".$Psw2."',";
}

$dotaz=$Psw2.
"`user_mail` = '".$u['Mail']."',".
"`user_info` = '".$u['Info']."',".
"`game_skin` = '".$u['Skin']."',".
"`game_skinpath` = '".$SkinPath."',".
"`game_lang` = '".$u['Lang']."',".
"`game_name` = '".$u['Name']."'";

$tabulka = $tb1."user";
$dotaz = "UPDATE $tabulka SET ".$dotaz." WHERE `user_login`='$login' AND `user_psw`='$psw' LIMIT 1";
mysql_query($dotaz) or die("Error: DB pridat! (user add): ".mysql_error());

$_SESSION['login'] = $login;
$_SESSION['psw'] = $psw;

$chyba.= "| Aktualizovany udaje uzivatele: <b>".$u['login']. "</b>";
}
else $chyba.= "| Nepridan! Chybne nebo neuplne udaje";
}
else $chyba.= "| Spatne heslo!";
}
else $chyba.= "| Banovane ip!";

echo $chyba;

mysql_Close();

Header( "Location: ".$fn1."setup.php?". session_name() ."=". session_id() );

ob_end_flush();
?>

Dokud nezacnu prepisovat obsah sessnu, tak zustavam nalogovany, ale v okamziku, kdy prepisi PSW, tak mne odloguje (cili chova se to, jakoby udelal jinou sessnu nebo nejak zachoval starou, kde heslo nesouhlasi s DB)
Z poznamek je videt, ze jsem zkousel sessnu destroyovat a zalozit novou, ale chovalo se to stejne.
Jake jsou moznosti zmeny obsahu sessnu?
Hugo
Profil
Tak ulož do session tu novou hodnotu a bude po problému.
peta
Profil *
Ano, to jsem prave udelal a to mi zpusobilo odlogovani, proto je to v komentari
// $_SESSION['psw'] = $Psw2;
Hugo
Profil
peta

Nemám čas procházet ten skript, ale nejdřív musíš změnit údaje v databázi a až potom v sessions. Pokud si myslíš, že je chyba jinde, tak ten skript zredukuj na nezbytne minimum a hod ho sem znovu.
peta
Profil *
Hugo
Proc nejdriv DB? vzdyt tam delam to, ze zmenim sesny a pak zapisi DB a na vystup uz jdou preci nove sesny, ne?

Nic, uz to asi vidim... Ja mel sice zapis noveho PSW, pak mam zapis DB, ale pak mam sesny podruhe a zapisuji tam stare PSW.

Ono je to nezbytne minimum, jen jsou to 2 soubory - formular a prijem dat z formulare.
hugo_jinde
Profil *
peta

Toto neni nezbytne minimum. Ten formular tady nema zadny vyznam a velka cast skriptu se da taky zahodit (myslim samozrejme v ramci dotazu ve foru). Neni moc lidi co maji cas hledat chybu ve stovkach radku.

Ale hlavne, ze ti to funguje.
peta
Profil *
ale jinak dik... sleduj...

if ($i===1)
{
/* vlozeni zaznamu do databaze */
/* --- ZAPIS sesnu ---*/
if ($Psw2!=="")
{
$Psw2 = md5($login.$Psw2);
$_SESSION['psw'] = $Psw2;
$Psw2 = "`user_psw` = '".$Psw2."',";
}

$dotaz=$Psw2.
"`user_mail` = '".$u['Mail']."',".
"`user_info` = '".$u['Info']."',".
"`game_skin` = '".$u['Skin']."',".
"`game_skinpath` = '".$SkinPath."',".
"`game_lang` = '".$u['Lang']."',".
"`game_name` = '".$u['Name']."'";

/* --- ZAPIS db ---*/
$tabulka = $tb1."user";
$dotaz = "UPDATE $tabulka SET ".$dotaz." WHERE `user_login`='$login' AND `user_psw`='$psw' LIMIT 1";
mysql_query($dotaz) or die("Error: DB pridat! (user add): ".mysql_error());

/* --- ZAPIS sesnu se starym heslem ---*/
$_SESSION['login'] = $login;
$_SESSION['psw'] = $psw;

... jsem si nevsiml, pouzival jsem to na neco jineho to druhe :)
peta
Profil *
link http://mracek.xhosting.cz/h2/pp_setup.php (ale ted uz to nema vyznam)
Toto téma je uzamčeno. Odpověď nelze zaslat.

0