Nejste přihlášeni
Stránky 1
Dobrý den,
vytvořil jsem stránky a na svém localhostu mi vše funguje. Celý projekt jsem vložíl na endoru, ale na stránkách se mi nejde přihlásit.
Nevíte kde může být problém?
Žádnou chybu to nevypisuje, viditelně probíhá jen refresh. Registrace uživatele funguje.
Děkuji
Jedná se o školní projekt valema.g6.cz
Upravil vales30 (2015-04-09 11:28:08)
Offline
Nechte si vypsat proměnné (přihlašovací údaje), které používáte a porovnejte je s údaji v databázi. Popřípadě pročtěte tento příspěvek.
Případně použijte pro přihlašovací dialog formulář.
1. Murphyho zákon:
Na počátku nebylo nic. I to se pokazilo!
stránky: CMS test
kontakt - instalace systémů, MySQL, FTP přístup, ...
Instalační balíky vybraných CSM
Problémy spojené s provozem služeb Endora, řešte na tomto fóru.
Offline
kksmirice: Proměnné souhlasí. Cítím problém spíš někde v nastavení..
Lkopo: register_globals je Off.
.. není potřeba něco nastavovat na endoře/phpMyAdmin? Něco co jsem přehlédl a proto mi to nefunguje jak na locale?
login.php
<?php
$page = isset($_GET['p'])?$_GET['p']:'home'; //???
if (!array_key_exists('login',$_SESSION))
{ // kontrola jestli existuje index login v poli s $_SESSION
$_SESSION['login'] = false; // defaulte jsme neprihlaseni
} // END OF: kontrola jestli existuje index login v poli s $_SESSION
if ($page == 'login' || ($_SESSION['login'] && $page != 'logoff'))
{ // pokus o nalogovani
$PHP_login_bw = isset($_SERVER['PHP_AUTH_USER'])?$_SERVER['PHP_AUTH_USER']:null; // login z prohlizece
$PHP_pass_bw = isset($_SERVER['PHP_AUTH_PW'])?$_SERVER['PHP_AUTH_PW']:null; // heslo z prohlizece
$rec = mysql_fetch_assoc(mysql_query("SELECT * FROM zakaznik WHERE login = '" . mysql_real_escape_string
($PHP_login_bw)."' AND heslo = '".md5($PHP_pass_bw)."'"));
if (!$rec)
{ // vyzadá si autentizacni tabulku pro login a heslo
header('HTTP/1.1 401 Unauthorized');
header('WWW-Authenticate: Basic realm="'.$PHP_system_name.'"');
$PHP_title = $PHP_system_name.' - Pristup odepren';
$PHP_redirect = true; // presmerovavame
$PHP_redirect_time = 5; // po 5 sec na url...
$PHP_redirect_url = 'index.php';
require 'pages/design/menu.php'; //pripojeni menu
?>
<?php
echo "<br><span class=\"chyba\" >Pro přístup na tuto stránku se musíte přihlásit!</span>";
?>
<?php
unset($_SESSION['login']); // odhlaseni autentizacni sessiony
require 'pages/design/footer.php'; // pripojeni HTML zapati
exit;
} // END OF: vyzadej si autentizacni tabulku pro login a heslo
else
{ // jsme prihlaseni
$PHP_logged = true;
$PHP_login = $rec['id_zakaznik'];
$PHP_jmeno = $rec['jmeno'];
$PHP_prijmeni = $rec['prijmeni'];
$PHP_adresa = $rec['ulice']." ".$rec['cislo_popisne']." ".$rec['mesto']." ".$rec['psc'];
//$PHP_user_id = $rec['id'];
$_SESSION['login'] = true; // autentizacni sessiona (vime, ze je uzivatel prihlasen)
} // END OF: jsme prihlaseni
} // END OF: pokus o nalogovani
else
if ($page == 'logoff')
{ // pokus o odhlaseni
unset($_SESSION['login']); // odhlaseni autentizacni sessiony
//session_destroy();
header('HTTP/1.1 401 Unauthorized');
header('WWW-Authenticate: Basic realm="'.$PHP_system_name.'"');
//header ('Location: index.php');
} // END OF: pokus o odhlaseni
?>
Upravil kksmirice (2015-04-10 09:26:02)
Offline
IMHO, proměnná $rec je pole. Vy vyhodnocujete pouze proměnnou $rec, která neexistuje.
Upravte si script tak, aby se testovala alespoň nějaká vrácená proměnní z dotazu, např. $rec['id_zakaznik'] (pokud taková existuje v tabulce).
Zkoušel jste provést úpravy podle zaslaného linku, popřípadě přihlašování změnit na php formulář?
1. Murphyho zákon:
Na počátku nebylo nic. I to se pokazilo!
stránky: CMS test
kontakt - instalace systémů, MySQL, FTP přístup, ...
Instalační balíky vybraných CSM
Problémy spojené s provozem služeb Endora, řešte na tomto fóru.
Offline
PHP_system_name je definována v includovaném scriptu.
S tím loginem bych byl opatrnější. Takhle se jen dozví, zda existuje login a heslo, ale již to neřeší, pokud takových uživatelů bude více. Bohužel ani registrační script neřeší duplicitu záznamů.
1. Murphyho zákon:
Na počátku nebylo nic. I to se pokazilo!
stránky: CMS test
kontakt - instalace systémů, MySQL, FTP přístup, ...
Instalační balíky vybraných CSM
Problémy spojené s provozem služeb Endora, řešte na tomto fóru.
Offline
1. MySQL PHP rozsireni a jeho fce jako mysql_fetch_assoc, mysql_real_escape_string je uz prakticky deprecated
2. warning na radku 4... lepsi by bylo neco jako
if (!isset($_SESSION) || !array_key_exists('login',$_SESSION))
mluvim o tom pouze proto, ze je to skolni projekt, ale jinak to s chybou nema nic spolecne
Kdyz to testuju u sebe(na endore), mam taky problem s tim, ze PHP_AUTH_USER a PHP_AUTH_PW jsou prazdne ... co vam tedy vrati ten mysql prikaz do rec, pokud zadate spravne udaje?
W3C validator | Performance tools | Stavové kódy HTTP | Fiddle | Codepen | Ideone | XAMPP
Offline
Na srv5 jsem také testoval - výsledek přihlašovací dialog, bez přihlášení.
Jsou vynechány dotazy do databáze.
Doporučuji nejprve zjistit co se vrací z autentizačních proměnných a pak řešit dál dotaz. Proto jsem se na začátku všeho ptal, zda jsou shodné hodnoty. Vaše odpověď byla ano, ale moc o tom nejsem přesvědčen, nechte si je v nějakém scriptu vypsat a bude vědět na čem jste.
OT
Vypadá to, že tady spíše diskutujeme my než uživatel
1. Murphyho zákon:
Na počátku nebylo nic. I to se pokazilo!
stránky: CMS test
kontakt - instalace systémů, MySQL, FTP přístup, ...
Instalační balíky vybraných CSM
Problémy spojené s provozem služeb Endora, řešte na tomto fóru.
Offline
Všem moc děkuji za velkou snahu. Bohužel moje znalosti nesahají do výše, v které mi doporučujete udělat změny.
Vzhledem k tomu, že jsem nepřišel na to jak pouze zprovoznit stránky stejně jako byly na lokálu, tak to musím vzdát.
Stejně z pohledu "lajka" mě fascinuje, že zde to před 14 dny fungovalo a bez jediné změny najednou ne. + jsou mi navrhované takové změny.
Offline
divim se, ze by to zde vubec nekdy fungovalo, kazdopadne nestacilo by pred
$PHP_login_bw = isset($_SERVER['PHP_AUTH_USER'])?$_SERVER['PHP_AUTH_USER']:null; // login z prohlizece
pridat
list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':' , base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));
W3C validator | Performance tools | Stavové kódy HTTP | Fiddle | Codepen | Ideone | XAMPP
Offline
Žádné změny to nedělá.
Offline
Admin prověří nastavení na serveru.
To co funguje u mě, u Vás není funkční.
Vyčkejte na odpověď admina.
1. Murphyho zákon:
Na počátku nebylo nic. I to se pokazilo!
stránky: CMS test
kontakt - instalace systémů, MySQL, FTP přístup, ...
Instalační balíky vybraných CSM
Problémy spojené s provozem služeb Endora, řešte na tomto fóru.
Offline
Dobrý den, o problému jsme byly informováni a řešíme ho. Odepíši zde až bude problém vyřešen. Omlouváme se za komplikace.
Offline
Je zapotřebí vytvořit na FTP soubor .htaccess s tímto obsahem:
SetEnvIfNoCase Authorization "Basic ([a-z0-9=]+)" REMOTE_AUTHORIZATION=$1
a následně za komentář "pokus o nalogovani" v PHP skriptu toto:
if (isset($_SERVER["REDIRECT_REMOTE_AUTHORIZATION"]) && $_SERVER["REDIRECT_REMOTE_AUTHORIZATION"] != '') {
$d = base64_decode($_SERVER["REDIRECT_REMOTE_AUTHORIZATION"]);
list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':', $d);
}
Offline
Stránky 1