Autor | Zpráva | ||
---|---|---|---|
DJ Profil * |
#1 · Zasláno: 15. 9. 2011, 22:55:10
Ahoj,
mám takový problém se session, procházela jsem diskusi a nepodařilo se mi ho vyřešit. Mám stránku, kde si přihlášený uživatel může změnit kontaktní údaje a ve formuláři bych potřebovala, aby tam byly předvyplněny staré údaje. Po přihlášení se v levém horním rohu objeví text "přihlášen jako: Jméno-uživatele" (tedy session fungují), avšak ve formuláři níže se ono jméno nevyplní - zůstane to prázdné. Ta stránka je řešena includováním několika stránek, první php příkaz je session_start(); Tento kód if (isset($_SESSION['user-logged-in']) and $_SESSION['user-logged-in'] == 1) { echo "<span class=\"provedeno\"><br />Přihlašení bylo úspěšné</span>"; echo "<br />Jste přihlášen jako:<br />"; echo $_SESSION['user-name']; echo "<br /><a href=\"\">nastavení účtu</a>"; echo "<br /><a href=\"../index.php?logout=1&token=".$_SESSION['user-token']."\">Odhlasit</a>"; } else ... funguje bez problémů, ale níže, ve formuláři <input type="text" name="name" value="<?php echo $_SESSION["user-name"]); ?>" /> se neobjeví nic. Přiznám se, že co se týče session jsem spíše začátečník, tak opravdu nevím a budu vděčná za každou radu. Děkuji |
||
motik Profil |
#2 · Zasláno: 15. 9. 2011, 22:58:26
DJ:
zkus odstranit ) u toho echa... <?php echo $_SESSION["user-name"]; ?> |
||
Tori Profil |
#3 · Zasláno: 15. 9. 2011, 22:59:08
<input type="text" name="name" value="<?php echo $_SESSION["user-name"]); ?>" /> |
||
DJ Profil * |
#4 · Zasláno: 15. 9. 2011, 23:01:34
motik:
omlouvám se za chybku, jen špatně zkopírovaný, v tomhle problém nebyl |
||
motik Profil |
#5 · Zasláno: 15. 9. 2011, 23:03:02 · Upravil/a: motik
DJ:
„jen špatně zkopírovaný“ nechceš sem hodit celej kód? jestli né, tak zkus vypisovat echo "<pre>"; print_r($_SESSION); echo "</pre>"; |
||
DJ Profil * |
#6 · Zasláno: 15. 9. 2011, 23:10:07
motik:
index.php, začátek: <!-- Start the session --> <?php session_start(); ?> <!-- Include the file with functions --> <?php include 'util/functions.php'; ?> <!-- Connection to the database --> <?php connect_db(); ?> <!-- Language, page, cookies, ... --> <?php include 'util/basic_setting.php'; ?> basic_setting.php <?php $lang = "cs"; if(!empty($_GET["lang"])) $lang = $_GET["lang"]; $page = "home"; if(!empty($_GET["page"])) $page = $_GET["page"]; if(isset($_POST['login'])) if($_POST['login'] == 1) if((isset($_SESSION['user-logged-in']) and $_SESSION['user-logged-in'] != 1) or !(isset($_SESSION['user-logged-in']))) $logged_in = user_login($_POST['email'],$_POST['pass']); if(isset($_GET['logout'])) if($_GET['logout'] == 1 and $_SESSION['user-logged-in'] == 1 and $_SESSION['user-token'] == $_GET['token']) user_logout(1); ?> login.php, (informace o přihlášení) <?php if(isset($logged_in) && $logged_in == -1) { echo "<br />"; print_translation_short("user_does_not_exist"); echo " "; echo '<a href ="../index.php?lang='.$lang.'&page='.$page.'">'; print_translation_short("back"); echo "</a>"; } else { if (isset($_SESSION['user-logged-in']) and $_SESSION['user-logged-in'] == 1) { echo "<span class=\"provedeno\"><br />Přihlašení bylo úspěšné</span>"; echo "<br />Jste přihlášen jako:<br />"; echo $_SESSION['user-name']; echo "<br /><a href=\"\">nastavení účtu</a>"; echo "<br /><a href=\"../index.php?logout=1&token=".$_SESSION['user-token']."\">Odhlasit</a>"; } else { echo "<form action='../index.php?lang=$lang&page=$page' method='post'>"; echo "<input type='hidden' name='login' value='1' />"; echo "<table>"; echo "<tr><td>E-mail:</td><td>"; echo "<input type='text' name='email' size='15' maxlength='64' value='' class='input' />"; echo "</td><td>"; if($lang == "cs") echo "Heslo:"; else echo "Password:"; echo "</td><td>"; echo "<input type='password' name='pass' size='15' maxlength='64' value='' class='input' />"; echo "</td><td>"; if($lang == "cs") echo "<input type='submit' name='submit' value='Vstoupit' class='button' />"; else echo "<input type='submit' name='submit' value='Enter' class='button' />"; echo "</td></tr><tr><td colspan='2'>"; if($lang == "cs") echo "Přihlásit trvale "; else echo "Login permanently"; echo "<input type='checkbox' name='set_cookie' />"; echo "</td><td colspan='3'>"; if($lang == "cs") echo "Nemáte ještě účet?"; else echo "Do not have an account yet?"; echo " "; echo "<a href='index.php?page=register&lang=$lang'>"; if($lang == 'cs') echo "Registrace"; else echo "Register"; echo "</a></td></tr>"; echo "<tr><td colspan='2'></td><td colspan='3'><a href='index.php?page=new-password&lang=$lang'>"; if($lang == "cs") echo "Zapomenuté heslo?\n"; else echo "Forgotten password?\n"; echo "</a></td></tr></table></form>"; } } ?> edit-user.php (stránka s tím formulářem), tady je důležitý jen tento řádek: <input type="text" name="name" value="<?php echo $_SESSION["user-name"]; ?>" /> tak snad je to dostačující :)) |
||
motik Profil |
#7 · Zasláno: 15. 9. 2011, 23:20:43
DJ:
proč takovou hrůzu? <!-- Start the session --> <?php session_start(); ?> <!-- Include the file with functions --> <?php include 'util/functions.php'; ?> <!-- Connection to the database --> <?php connect_db(); ?> <!-- Language, page, cookies, ... --> <?php include 'util/basic_setting.php'; ?> proč to nezapíšeš: <?php session_start(); include 'util/functions.php'; ... ?> pokud se ti nahoře vypíše, že ten uživatel je přihlášen: uživatel, tak bych řekl, že chyba bude někde v edit-user.php.. zkus ještě prohodit ty uvozovky, ale to by na to nemělo mít vliv... a zkus si vypsat obsah celé proměné $_SESSION |
||
DJ Profil * |
#8 · Zasláno: 15. 9. 2011, 23:25:22
motik:
„proč takovou hrůzu?“ nevím, v tomhle stavu jsem stránky převzala :) změna uvozovek nic neřeší, obsah proměnný je prázdný |
||
motik Profil |
#9 · Zasláno: 15. 9. 2011, 23:30:17
DJ:
a máš v tom souboru edit-user.php nastarovaný session? |
||
DJ Profil * |
#10 · Zasláno: 15. 9. 2011, 23:33:33
motik:
„a máš v tom souboru edit-user.php nastarovaný session?“ ne, nemám, ale to by snad nemělo vadit? edit-user.php je vložen dovnitř stránky index.php a tam to je na začátku... zkusila jsem přesto vložit na začátek <?php session_start(); ?> |
||
motik Profil |
#11 · Zasláno: 15. 9. 2011, 23:40:41
DJ
pokud je to vložený, tak to nic... já jen kdyby náhodou (radši se blbě zeptat).. a procházelas ten kód a vypisovala sis tu session - měla bys tím zjistit, kde ti mizí a tím pádem i odhalíš problém jinak ten jazyk bych raději řešil: if ($lang == 'cs') { // česká verze define('HESLO', 'Zadejte heslo'); define('REGISTRACE', 'Registrace'); } else { // anglická verze define('HESLO', 'Pass'); define('REGISTRACE', 'Registr'); } |
||
DJ Profil * |
#12 · Zasláno: 16. 9. 2011, 08:56:35
motik:
tak jsem zjistila, kde se to ztrácí. stránka index.php ... <div class="art-contentLayout"> <?php //tady to ještě je if($page == 'register') include 'users/register.php'; else if($page == 'new-password') include 'users/new-password.php'; else if($page == 'edit-menu') // tady se to ztratí include 'users/edit-user.php'; else include $page.'.php'; //tady už to zase je ?> </div> ... takže chyba musí být někde v tom edit-user.php, hodím sen ten kód raději celý <!-- Side bar --> <div class="art-sidebar"> <?php include 'home/home-menu.php'; ?> </div> <!-- Main page --> <div class="art-content"> <h1>Změna kontaktních údajů uživatele</h1> <?php echo "<form action=\"../index.php?lang=$lang&page=edit-user&sent=true\" method=\"post\">"; ?> <table cols = 2 rows = 7> <tr height = 50px> <td> <?php print_translation_short("name:"); ?> </td> <td> <input type="text" name="name" value="<?php echo $_SESSION['user-name']; ?>" /> </td> </tr> <tr height = 50px> <td> <?php echo "E-mail:"; ?> </td> <td> <input type="text" name="email" value="<?php /*find_info("email",$_SESSION["user-name"]);*/?>" /> </td> </tr> <tr> <td> <?php print_translation_short("password:"); ?> </td> <td> <input type="password" name="password1" /> </td> </tr> <tr> <td> <?php print_translation_short("retype_password:"); ?> </td> <td> <input type="password" name="password2" /> </td> </tr> <tr height = 50px> <td> <?php print_translation_short("phone:"); ?> </td> <td> <input type="text" name="phone" value="<?php /*find_info("phone",$_SESSION["user-name"]);*/?>" /> </td> </tr> <tr height = 50px> <td> <?php print_translation_short("focus:"); ?> </td> <td> <input type="text" name="focus" value="<?php /*find_info("focus",$_SESSION["user-name"]);*/?>" /> </td> </tr> <tr height = 50px> <td> <?php print_translation_short("public_contact_info:"); ?> </td> <td> <input type="checkbox" name="show_info" /> </td> </tr> </table> <br /> <?php print_translation_short("custom_field:"); ?> <br /> <br /> <textarea rows = 10 cols = 58 name="message" wrap = soft><?php /*find_info("notes",$_SESSION["user-name"]);*/?></textarea><br /> <br /> <?php echo "<input type='submit' value='"; print_translation_short("submit"); echo "'/>" ?> </form> </div> |
||
DJ Profil * |
#13 · Zasláno: 16. 9. 2011, 09:09:41
ještě jsem zkoušela utvořit si ten samý soubor se stejným kódem, akorát, že jsem nepoužila include, ale dala jsem tam celý ten kód... a tohle funguje.. proč to tedy neběží, když do index.php includuju edit-user.php?
|
||
Michel Profil |
#14 · Zasláno: 16. 9. 2011, 11:02:03
DJ:
„proč to tedy neběží, když do index.php includuju edit-user.php?“ Máš i v tom souboru edit-user.php vloženo na začátku session_start();? Bez toho mi to taky neběhalo. |
||
DJ Profil * |
#15 · Zasláno: 16. 9. 2011, 11:08:27
Michel:
„Máš i v tom souboru edit-user.php vloženo na začátku session_start();? Bez toho mi to taky neběhalo.“ neměla jsem, vložila, a stejně nic. třeba v tom souboru login.php to session_start(); taky nemám a tam to funguje. |
||
DJ Profil * |
#16 · Zasláno: 16. 9. 2011, 11:20:37
No hurá. Najednou to začlo fungovat. To je mi ale záhada, proč... :)
Děkuji všem, co se snažili mi pomoct. |
||
DJ Profil * |
#17 · Zasláno: 16. 9. 2011, 11:53:47
a narážím na další problém - opravdu tomu nerozumím, proč se to tak chová... na tom jednom místě to funguje, pokud vypíšu
echo $_SESSION['user-name']; kdekoliv jinde na stránce edit-user.php, tak se nevypíše nic :( |
||
YoSarin Profil |
#18 · Zasláno: 16. 9. 2011, 12:02:24
DJ:
Zkus to hned na začátku přiřadit do nějaké proměnné a tu pak používat místo toho... |
||
Michel Profil |
#19 · Zasláno: 16. 9. 2011, 12:04:51
DJ:
Vymaž paměť prohlížeče. Zřejmě má ty stránky v paměti. |
||
DJ Profil * |
#20 · Zasláno: 17. 9. 2011, 13:15:00
Michel:
díky, zřejmě to bylo příčinou problému ... |
||
Časová prodleva: 13 let
|
0