| 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: 15 let
|
|||
0