Autor | Zpráva | ||
---|---|---|---|
KronnY Profil * |
#1 · Zasláno: 7. 2. 2012, 20:01:55
Ahoj,
jak mám zakázat přímé připojení na login.php? Potřebuju to z důvodu, že pokud se na login.php přejde přímo vyhodí chyby, protože získává místo proměných nic. Potřebuju aby se na login.php dalo přejít pouze přes index.php kde je přihlašovací dialog. Díky! |
||
Keeehi Profil |
#2 · Zasláno: 7. 2. 2012, 20:10:05
KronnY:
Ošetřit ty prázdné proměnné. Funkce isset() a empty() v kombinaci s podmínkami a nebudeš muset vymýšlet takovéto blbosti. |
||
Janča N. Profil |
To co píše Keeehi je nejjednodušší řešení
Nějak takhle: if(isset($POST['odeslano'])){ //ok...prikazy } else{ $_SESSION['zprava'] = "Nepovolený přístup"; header("Location: index.php"); } S tím, že pak v index.php vypíšeš tu SESSION se zprávou. Takhle podobně si můžeš ošetřit prázdné inputy s následným výpisem, co nebylo vyplněno. A nebo do else větve jen dej die("Nepovolený přístup"); |
||
KronnY Profil * |
#4 · Zasláno: 7. 2. 2012, 23:00:48
Díky moc, isset funguje,
jen je problém s tou funkcí header(); Stále vypisuje Cannot modify header information - headers already sent by (output started at ..\login.php:6) in ..\login.php on line 69 Co s tím? Prosím :O |
||
pcmanik Profil |
#5 · Zasláno: 7. 2. 2012, 23:05:16
KronnY:
Mas predtym headerom nejaky textovy vypis, preto to nejde. |
||
KronnY Profil * |
#6 · Zasláno: 7. 2. 2012, 23:07:37
Jakej textovej výpis .. mám před ním echo, to vadí? .. Vymazal jsem to ale stále stejná chyba!
|
||
Janča N. Profil |
Není možné, abys něco vypsal echo nebo html a poté provedl přesměrování. Máš-li nějakou zprávu pro uživatele, vlož jí do SESSION a vypiš až v index.php a nebo něco uživateli vypiš, ukonči provádění skriptu buď zmiňovaným die a nebo exit; a nepřesměrovávej :)
FAQ |
||
KronnY Profil * |
#8 · Zasláno: 7. 2. 2012, 23:15:01
html mám úplně na začátku ... jak mám hodit zprávu do session? :D .. Né posím potřeboval bych to vysvětlit jak jí mám vypsat z login.php na index.php
|
||
Janča N. Profil |
login.php
na začátku souboru dej session_start();
vložení zprávy: $_SESSION['zprava'] = "Tady muze byt zprava pro uzivatele" index.php na úplný začátek souboru dej session_start();
vypsání zprávy echo $_SESSION['zprava']; |
||
KronnY Profil * |
#10 · Zasláno: 7. 2. 2012, 23:20:19
html s tím nesouvisí, smazal jsem ho a stále nic :(
Tohle je můj kód v login.php: <html> <!-- použití css šablony --> <link rel="stylesheet" href="css/login.css" type="txt/css" /> </html> <?php if (isset($_POST['submit'])) { //připojení souboru mysql.conf ze složky config a nahrání proměnných/obsahu include("config/mysql.conf"); //proměné z formuláře $username1_form = $_POST["username1_field"]; $username2_form = $_POST["username2_field"]; $password_form = $_POST["password_field"]; //zkrácení jména a příjmení jen na jednu proměnnou $username_form = "$username1_form$username2_form"; //pokud je následující vyplněno if ($username1_form&&$username2_form&&$password_form) { $connect = mysql_connect("$mysql_host","$mysql_user","$mysql_pass") or die("Chyba #1! (Připojení k databázi selhalo!)"); mysql_select_db("$mysql_db") or die("Chyba #2 (Databáze nebyla nalezena!)"); $query = mysql_query("SELECT * FROM $mysql_query WHERE uzivatelske_jmeno='$username_form'"); $num_rows = mysql_num_rows($query); if ($num_rows!=0) { while ($row = mysql_fetch_assoc($query)); { $db_username = $row["uzivatelske_jmeno"]; $db_password = $row["uzivatelske_heslo"]; } if ($db_username==$username_form&&$db_password==$password_form) { echo ("Přihlášení proběhlo úspěšně! Budete automaticky přesměrováni."); header("Refresh: 3;url=view.php"); } else { echo ("Chyba #5! (Chybné heslo!)"); } } else { echo ("Chyba #4! (Uživatel neexistuje!)"); } } else { echo ("Chyba #3! (Jméno, Příjmení i heslo musí být zadáno!)"); } } else { $_SESSION["message"] = "Nepovolený přístup"; header("Location: index.php"); } ?> Jak mám použít to že by se to vypsalo na indexu? .. To znamená že by se ani na login.php nemuselo přecházet? |
||
Janča N. Profil |
#11 · Zasláno: 7. 2. 2012, 23:27:03
Tohle tu být nesmí:
<html> <!-- použití css šablony --> <link rel="stylesheet" href="css/login.css" type="txt/css" /> </html> |
||
KronnY Profil * |
#12 · Zasláno: 7. 2. 2012, 23:27:58
Jak teda mám použít css? Tento samý odkaz funguje i v PHP?
|
||
Janča N. Profil |
K čemu tě tam css bude, když chceš všechny výpisy mít na index.php?
Co takhle to udělat tak, že login.php bude jen obslužný skript, který nebude nic vypisovat - všechny potřebné výpisy vypíšeš buď na index.php pomocí Session a nebo pokud vše proběhne úspěšně, přesměruje tě to rovnou po úspěšném přihlášení dál... |
||
KronnY Profil * |
#14 · Zasláno: 7. 2. 2012, 23:35:03
Pravda :) .. Mockrát děkuju, a nešlo by prosím ještě vysvětlit jak to udělat? Prosím!
|
||
Janča N. Profil |
#15 · Zasláno: 7. 2. 2012, 23:44:30
Jen v rychlosti a bez záruky:
1) vyházíš to html 2) na začátek dáš session_start(); 3) všude, kde máš nějaká echa, která vypisují chybu smažeš a přesuneš do $_SESSION["message"]; následně funkcí header přesměruješ třeba na index.php a chybu vypíšeš, jak to udělat, máš popsáno výše[#9] 4) tohle by si možná zasloužilo require místo include include("config/mysql.conf"); (vrací-li funkce require false, zastaví se provádění skriptu)
tak si hraj, snad tě moc nekecám :) |
||
KronnY Profil * |
#16 · Zasláno: 7. 2. 2012, 23:48:26
Mockrát děkuji :) .. Ještě jedna jediná věc co bych potřeboval.
Pokud vyplním špatně uživatele vyhodí mi to chybu že je špatný uživatel Ale pokud podle databáze zadám správně jméno, příjmení i heslo tak mi to napíše že mám stále špatné heslo! Děkuji |
||
Janča N. Profil |
#17 · Zasláno: 7. 2. 2012, 23:56:59
Na to jsem zapomněla :)
Já vždycky po výpisu (echo $_SESSION['zprava']) zprávy SESSION "mažu"...timhle stylem: $_SESSION['zprava'] = ""; .
|
||
KronnY Profil * |
#18 · Zasláno: 8. 2. 2012, 00:01:30
Asi to vyznělo jinak než jsem chtěl :D
Mám problém s tím, že když zadám správné heslo stejně to pokaždé napíše že mám heslo špatné a nepřihlásí mě to. A ještě něco, to echo tu zprávu nevypíše ... nevím proč, na index.php to půjde, změní se SESSION zpráva, pomocí headeru se to během chíle vrátí ale na indexu se nic nevypíše! Proč? |
||
Janča N. Profil |
#19 · Zasláno: 9. 2. 2012, 19:09:53
Máš na indexu na začátku souboru nastartovaný session_start(); ? Zkus si echem vypsat tu zprávu tam, kde ji nastavuješ. Vypíše se?
To přhlašování fungovalo předtím, než si to předělal na SESSION? |
||
Časová prodleva: 11 let
|
0