Autor | Zpráva | ||
---|---|---|---|
Schindler Profil * |
#1 · Zasláno: 6. 3. 2013, 00:10:22
Dobrý večer,
buduji stránky založené následujícím způsobem. V adresáři webu mám klasický index.php, který je základní stavební jednotkou celého webu. Obsahuje hlavičku, obsah i patičku, přičemž obsah je proměnný a ještě závislý na přihlásění uživatele. Takže pokud je uživatel přihlášen, tak obsah vypádá nějak následovně: if($_SESSION['username']!=""){ if($_GET['page'] == "page"){include "pages/index.php";} /* Verification */ elseif($_GET['settings'] == "verification" && $_GET['verification'] == "login"){include "settings/verification/login/index.php";} elseif($_GET['settings'] == "verification" && $_GET['verification'] == "logout"){include "settings/verification/logout/index.php";} /* Else */ else {include "pages/index.php";} Takže pokud odkážu např. na index.php?page=verification&verification=logout, tak se mi odstraní zápis ze session a uživatel se odhlásí. Všechno tohle mi funguje a stánky se mění na základě odkazu. Ale teď nastává problém. Pokud já chci uživatele přihlásit přes odkaz index.php?page=verification&verification=login, tak se nic nestane, resp. zápis do session, mám podezení, že include stánky pro zápis do session nefunguje, ale proč? Pokud použiji klasickou cestu settings/verification/login/index.php, tak se zápis do session povede, ale pokud bych chtěl přihlašování pomocí index.php?page=verification&verification=login?? else { echo " <div class='login-page'>\n"; echo " <form action='index.php?page=verification&verification=login?' method='post'>\n"; echo " <h1>Login</h1>\n"; echo " <label id='username'>Username:</label>\n"; echo " <input id='username' type='text' name='username' size='30' tabindex='1' /><br />\n"; echo " <label id='password'>Password:</label>\n"; echo " <input id='password' type='password' name='password' size='30' tabindex='2' /><br />\n"; echo " <input id='button' type='submit' name='submit' value='Login' tabindex='3' />\n"; echo " </form>\n"; echo " </div>\n"; } Moc děkuji za odpovědi. |
||
Alphard Profil |
Obecně nastavení sessions musí fungovat kdekoliv v průběhu zpracování stránky, tj. i v libovolně zanořeném include.
session_start() dejte na začátek toho základního index.php. Konkrétněji těžko radit, když neuvádíte přihlašovací script. Davex [#3]: Aha, na to jsem se nesoustředil. |
||
Davex Profil |
Schindler:
U nepřihlášeného uživatele by nemělo být známo uživatelské jméno, takže není splněna první podmínka a skočí se na větev vypisující přihlašovací formulář (pokud je ten druhý výpis pokračováním prvního). A kromě toho by ty odkazy pro přihlášení a odhlášení měly vypadat jinak: index.php?settings=verification&verification=login. Doporučuji prostudovat Nejčastější potíže s PHP (FAQ) » Registrace uživatelů. |
||
Schindler Profil * |
#4 · Zasláno: 6. 3. 2013, 11:47:55
Děkuji za odpovědi.
Co se týče té špatné adresy, tak tím to nebylo, respektivě večer jsem zkoušel více možností, a tak jsem jí sem pro kázku rychle napsal, avšak špatně. Co se týče přihlašování a odhlašování ... To mi funguje naprosto správně, dokonce i mé víceúrovnňové přihlášení, ale pouze pokud bych chtěl udělat přihlášení přes tento odkaz, tak se nic nestane, do session se nic nezapíše ... pokud použiju pevnou cestu k souboru, tak se přihlášení zdaří. Pro chod stránky to není nijak závažné a obejdu se bez toho, ale přece jenom bych to měl raději přes odkaz index.php?vefi....... Díky za další rady, doufám že vám přiložené kódy pomohou. PS: Nějak se poslední vložený text nevypisuje celý, ale ta podstata přihlášení tam je (pouze chybí část s přesměrováním po přihlášení a při nezdařelém přihlášení) Základní soubor index.php <?php header("Cache-control: private"); echo "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'><html xmlns='http://www.w3.org/1999/xhtml'>\n"; echo "<head>\n"; echo " <title>VACC-CZ - Events manager</title>\n"; echo " <meta name='author' content='Bedřich Schindler'>\n"; echo " <meta name='description' content='Events Manager of VACC-CZ. Only for competent persons.'>\n"; echo " <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>\n"; echo " <link rel='stylesheet' type='text/css' href='."/settings/style.css'>\n]http://".$_SERVER['HTTP_HOST']."/settings/style.css'>\n"; echo "</head>\n"; echo "<body>\n"; session_start(); if($_SESSION['username']!=""){ echo " <div class='header'>VACC-CZ Events manager</div>\n"; echo " <div class='user-panel'>"; if($_SESSION["access_level"]==""){echo "";} /* Doplnit adresu */ elseif($_SESSION["access_level"]=="User"){echo $_SESSION["first_name"]." ". $_SESSION["last_name"]." | <a href='index.php?settings=verification&verification=logout'>Logout</a> | <a href='index.php?page='>Setting</a>";} /* Doplnit adresu */ elseif($_SESSION["access_level"]=="Administrator"){echo $_SESSION["first_name"]." ". $_SESSION["last_name"]." | <a href='index.php?settings=verification&verification=logout'>Logout</a> | <a href='index.php?page='>Setting</a> | <a href='index.php?page='>Administration</a>";} /* Doplnit adresu */ echo "</div>\n"; echo " <div class='navigation-panel'>\n"; echo " <div class='navigation'>\n"; echo " <ul class='level-1'>\n"; echo " <li class='level-1'><a href=''>Booking</a>\n"; echo " <ul class='level-2'>\n"; echo " <li class='level-2'><a href=''>Insert</a></li>\n"; echo " <li class='level-2'><a href=''>Update</a></li>\n"; echo " <li class='level-2'><a href=''>Delete</a></li>\n"; echo " </ul>\n"; echo " </li>\n"; echo " <li class='separator'> | </li>\n"; echo " <li class='level-1'><a href=''>Events</a>\n"; echo " <ul class='level-2'>\n"; echo " <li class='level-2'><a href=''>Insert</a></li>\n"; echo " <li class='level-2'><a href=''>Update</a></li>\n"; echo " <li class='level-2'><a href=''>Delete</a></li>\n"; echo " </ul>\n"; echo " </li>\n"; echo " <li class='separator'> | </li>\n"; echo " <li class='level-1'><a href=''>About</a>\n"; echo " </li>\n"; echo " </ul>\n"; echo " </div>\n"; echo " </div>\n"; .... .... .... echo " <div class='content'>\n"; require "index.dat"; echo " </div>\n"; } else { echo " <div class='header'>VACC-CZ Events manager</div>\n"; echo " <div class='user-panel'>"; if($_SESSION["access_level"]==""){echo "";} /* Doplnit adresu */ elseif($_SESSION["access_level"]=="User"){echo $_SESSION["first_name"]." ". $_SESSION["last_name"]." | <a href='index.php?settings=verification&verification=logout'>Logout</a> | <a href='index.php?page='>Setting</a>";} /* Doplnit adresu */ elseif($_SESSION["access_level"]=="Administrator"){echo $_SESSION["first_name"]." ". $_SESSION["last_name"]." | <a href='index.php?settings=verification&verification=logout'>Logout</a> | <a href='index.php?page='>Setting</a> | <a href='index.php?page='>Administration</a>";} /* Doplnit adresu */ echo "</div>\n"; echo " <div class='login-page'>\n"; echo " <form action='index.php?settings=verification&verification=login' method='post'>\n"; echo " <h1>Login</h1>\n"; echo " <label id='username'>Username:</label>\n"; echo " <input id='username' type='text' name='username' size='30' tabindex='1' /><br />\n"; echo " <label id='password'>Password:</label>\n"; echo " <input id='password' type='password' name='password' size='30' tabindex='2' /><br />\n"; echo " <input id='button' type='submit' name='submit' value='Login' tabindex='3' />\n"; echo " </form>\n"; echo " </div>\n"; } echo " <div class='endora'><endora></div>\n"; echo "</body>\n"; echo "</html>\n"; ?> <?php if($_GET['page'] == "page"){include "pages/index.php";} /* Verification */ elseif($_GET['settings'] == "verification" && $_GET['verification'] == "login"){include "settings/verification/login/index.php";} elseif($_GET['settings'] == "verification" && $_GET['verification'] == "logout"){include "settings/verification/logout/index.php";} /* Else */ else {include "pages/index.php";} ?> <?php $username = $_POST["username"]; $password = md5($_POST["password"]); require "../../database/index.php"; $query = mysql_query("SELECT * FROM _em_users WHERE username = '$username' AND password = '$password'"); $authentication = mysql_num_rows($query); $extract = mysql_fetch_array($query); if($authentication == 1) { session_start(); $_SESSION["user_id"] = $extract["user_id"]; $_SESSION["username"] = $extract["username"]; $_SESSION["password"] = $extract["password"]; $_SESSION["access_level"] = $extract["access_level"]; $_SESSION["first_name"] = $extract["first_name"]; $_SESSION["last_name"] = $extract["last_name"]; $_SESSION["cid"] = $extract["cid"]; $redir = "http://".$_SERVER["HTTP_HOST"]; header("Location: $redir"); die(); } else { $redir2 = "."/settings/error/login-error.php]http://".$_SERVER["HTTP_HOST"]."/settings/error/login-error.php"; header("Location: $redir2"); } ?> |
||
Micruss Profil |
#5 · Zasláno: 6. 3. 2013, 17:46:03
jen se chci zeptat... a zkoušel si vypsat echo $_POST['username']; když to odesíláš na ten server ... ted nevím jak je ta adresa &verification=login bo tak nějak... zkus to schválně co to vypíše, třeba že to není nadefinovaný
|
||
Časová prodleva: 11 let
|
0