Autor | Zpráva | ||
---|---|---|---|
peta Profil * |
#1 · Zasláno: 16. 12. 2005, 08:41:40
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 |
#2 · Zasláno: 16. 12. 2005, 10:30:20
Tak ulož do session tu novou hodnotu a bude po problému.
|
||
peta Profil * |
#3 · Zasláno: 16. 12. 2005, 13:36:09
Ano, to jsem prave udelal a to mi zpusobilo odlogovani, proto je to v komentari
// $_SESSION['psw'] = $Psw2; |
||
Hugo Profil |
#4 · Zasláno: 16. 12. 2005, 14:02:31
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 * |
#5 · Zasláno: 16. 12. 2005, 14:22:18
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 * |
#6 · Zasláno: 16. 12. 2005, 14:27:07
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 * |
#7 · Zasláno: 16. 12. 2005, 14:27:33
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 * |
#8 · Zasláno: 16. 12. 2005, 14:30:26
link http://mracek.xhosting.cz/h2/pp_setup.php (ale ted uz to nema vyznam)
|
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0