Autor | Zpráva | ||
---|---|---|---|
Folly Profil |
#1 · Zasláno: 25. 5. 2011, 14:28:41 · Upravil/a: Folly
Zdravím, už delší dobu mám jistý problém, který se mi nedaří vyřešit, tak bych Vás tímto chtěl požádat o pomoc ... třeba na to někdo přijde.
Můj problém je, že na stránkách mám klasické přihlašování uživatelů ... Návštěvník zadá svůj login a heslo a přihlásí se do systému (jedná se o systém pro rezervaci jízd pro jistou autoškolu ... je to můj první projekt s PHP a MySQL, na kterém se tyto dva jazyky snažím už delší dobu naučit ...) Nicméně samotné přihlášení do systému se mi povede, v případě, že zadám login i heslo správně ... ale můj problém je, že si do proměnné v Session uložím několik věcí, jednou z nich je i login uživatele. Ten ukládám do $_SESSION['username'] echo $_SESSION['username']; $_SESSION['username'] Níže uvádím hlavní skript, který obstarává systém a to soubor rezervace.php a skript kalendar.php, na kterém se snažím vypsat jméno uživatele za pomoci echo $_SESSION['username']; Obsah casti souboru rezervace.php: <?php session_start(); // Odfiltrovani prijatych hodnot $username = (isset($_POST['username'])) ? $_POST['username'] : ''; $password = (isset($_POST['password'])) ? $_POST['password'] : ''; $redirect = (isset($_REQUEST['redirect'])) ? $_REQUEST['redirect'] : 'rezervace.php?page=cal&month='.$akt_mesic.''; if (isset($_POST['submit']) && $_POST['submit'] == 'Potvrdit') { $nazev_tabulky = "site_user"; // Spojitost se souborem db_site_user_create.php $dotaz = 'SELECT username FROM '.$nazev_tabulky.' WHERE username = "' . mysql_real_escape_string($username, $db) . '" AND password = "' . mysql_real_escape_string($password, $db) . '"'; $vysledky = mysql_query($dotaz, $db) or die(mysql_error($db)); if (mysql_num_rows($vysledky) > 0) { $_SESSION['username'] = $username; $_SESSION['logged'] = 1; // Vytahne z tabulky "site_user" cislo uzivatele (promennou "user_id") podle "username" $nazev_tabulky = "site_user"; // Spojitost se souborem db_site_user_create.php $dotaz = 'SELECT user_id FROM '.$nazev_tabulky.' WHERE username = "' . mysql_real_escape_string($username, $db) . '"'; $vysledky = mysql_query($dotaz, $db) or die(mysql_error($db)); // Vypis zvolenych sloupcu z databaze $sloupec_user_id = "user_id"; while ($row = mysql_fetch_assoc($vysledky)) { $_SESSION['user_id'] = $row[$sloupec_user_id]; } // Vytahne z tabulky "site_user_info" jmeno a prijmeni uzivatele (promenne "first_name" a "last_name") podle "user_id" $nazev_tabulky = "site_user_info"; // Spojitost se souborem db_site_user_create.php $dotaz = 'SELECT first_name, last_name FROM '.$nazev_tabulky.' WHERE user_id = "'. mysql_real_escape_string($_SESSION['user_id'], $db) .'"'; $vysledky = mysql_query($dotaz, $db) or die(mysql_error($db)); // Vypis zvolenych sloupcu z databaze $sloupec_first_name = "first_name"; $sloupec_last_name = "last_name"; while ($row = mysql_fetch_assoc($vysledky)) { $_SESSION['first_name'] = $row[$sloupec_first_name]; $_SESSION['last_name'] = $row[$sloupec_last_name]; } header('Refresh: 0; URL='.$redirect); echo '<p>Nyní budete automaticky poesmirováni na stránku online rezervace jízd.</p>'; echo '<p>Nebudete-li do 5 sekund poesmirováni automaticky,<a class="normal_link" href="'.$redirect.'">kliknite prosím sem</a>.</p>'; die(); } else { // Tyto hodnoty je treba explicitne nastavit $_SESSION['username'] = ''; $_SESSION['logged'] = 0; $_SESSION['error'] = 1; header('Refresh: 0; URL='.$redirect); die(); } mysql_free_result($vysledky); } ?> |
||
Folly Profil |
#2 · Zasláno: 25. 5. 2011, 14:33:20 · Upravil/a: Folly
pokračování souboru rezervace.php (nevlezl se celý jeho obsah do jednoho příspěvku):
<?php if (isset($_SESSION['logged']) && $_SESSION['logged'] == 1) { switch ($_GET['page']) { case "cal": include "kalendar.php"; break; case "book": include "book.php"; break; case "new"; include "register.php"; break; case "del"; include "delete.php"; break; default: echo "Chyba ve switchi nebo v promenne URL - promenna URL nema ani jednu z hodnot nastavenych ve switchi!"; break; } } else { if (isset($_SESSION['error'])) { echo '<p><strong>Bylo zadáno neplatné uživatelské jméno nebo heslo!</strong></p>'; } if (isset($_GET['logout'])) { echo '<p><strong>Byl jste úspešne odhlášen!</strong></p>'; } include 'login.php'; } ?> Obsah souboru kalendar.php: <h2>Informace</h2> <table width="55%" class="static_table" cellpadding="0" cellspacing="0"> <tr> <td>Přihlášen s loginem:</td> <td class="green"> <?php echo $_SESSION['username']; ?> Za případnou pomoc či nějaký nápad předem moc díky. //EDIT: zredukoval sem délky kódu na co nejmenší a vybral jen důležité části z kódů, pro větší přehled ... |
||
laijk Profil |
#3 · Zasláno: 25. 5. 2011, 14:49:16 · Upravil/a: laijk
Folly:
dúfam, že som sa nestratil, ale zdá sa mi, že máš zle toto: $vysledky = mysql_query($dotaz, $db) or die(mysql_error($db)); if (mysql_num_rows($vysledky) > 0) { // tu by si mal dopísať: extract($vysledky); $_SESSION['username'] = $username; $_SESSION['logged'] = 1; -oskúšaj to, je to dosť velký kód, dúfam, že som sa nepomýlil. EDIT: prepáč, asi to nepôjde, pozrel som si to znova, ešte raz si to pozriem, ale môžeš to oskúšať. |
||
laijk Profil |
#4 · Zasláno: 25. 5. 2011, 15:01:43
Folly:
no takto: ak chceš do tejto premennej: $vysledky = mysql_query($dotaz, $db) or die(mysql_error($db)); if (mysql_num_rows($vysledky) > 0) { // tu by si mal dopísať: extract($vysledky); $_SESSION['username'] $_SESSION['logged'] = 1; priradiť hodnotu z databázi, tak by si tam tú funkciu extract mal dať. |
||
Folly Profil |
#5 · Zasláno: 25. 5. 2011, 15:04:42
laijk:
Zkusil sem, jak si radil přidat ten jeden řádek s funkcí extract a bohužel nepomohlo :(. |
||
laijk Profil |
#6 · Zasláno: 25. 5. 2011, 15:11:12 · Upravil/a: laijk
Folly:
mal by si trocha upraviť obsah sôboru kalendar.php lebo to horné <?php |
||
Folly Profil |
#7 · Zasláno: 25. 5. 2011, 15:20:48
laijk:
Jj, sry za něj, to tam být samozřejmě nemá, zůstalo mi tam po editaci toho kódů, v reálu to mám v tom souboru kalendar.php správně v něm si myslím, že problém není ... nebo spíš není kde, tam se snažím jen tu proměnou vypsat za pomocí echo $_SESSION['username']; |
||
Folly Profil |
#8 · Zasláno: 25. 5. 2011, 15:31:08
Další poznatek je, že na localhostu mi to funguje normálně ... Ale po uploadu na web, hosting = webzdarma, to nefunguje ... Jinak stránka je umístěna zde.
|
||
sacharoza Profil * |
#9 · Zasláno: 26. 5. 2011, 11:54:11
Pokud ostatni se ostatni udaje vypisi, tak zmente jmeno session napr. na $_SESSION['user'].
|
||
Folly Profil |
#10 · Zasláno: 26. 5. 2011, 17:19:00
sacharoza:
Moc, moc díky ... Rada pomohla a po přejmenování proměnné na $_SESSION['usern'] vše funguje jak má. Nikdy by mě nenapadlo, že by to mohlo být tímto a nikdy bych nezkusil přejmenovat tu proměnou, takže obrovské díky za spoustu ušetřené práce. |
||
Časová prodleva: 13 let
|
0