Autor Zpráva
hiska
Profil
zdravim ve spolek,
mam problem s prihlasovanim
do adminu poustim uzivatele tak ze pokud daji spravne udaje k prihlaseni zapise se session:

 $_SESSION["log"] = "ano";                
$_SESSION["idcislo"] = $_POST[auth_login];
$_SESSION["kod"] = $zaznamy[kod];

a v zahlavi kazde "zabezpecene stranky" je
if ($_SESSION[firma_log]!="ano") { nake presmerovai }

bohuzel tak 10% uzivatelu to nefunguje
prihlasuje se tak 100, 200 uzivatelu denne

co delam spatne?

PS celkove to vypada ze po prihlaseni se vubec nezapise ty tri session

Moderátor Chamurappi: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
Moderátor Chamurappi: Tvůj projev je špatně srozumitelný, piš prosím s diakritikou.
Moderátor Chamurappi: Titulek „PHP SESSION“ nevystihuje podstatu dotazu. Příště zkus prosím vymyslet lepší.
Radek9
Profil
Můžeš sem dát celý kód? Z tohohle ti moc neporadíme.
hiska
Profil
No tam nic jineho není

po odeslani se provede dotaz, ktery overi jestli je spravne heslo a jmeno ...
po odeslání se provede dotaz, který ověří jestli je správné heslo a jméno ... dotud v pořádku ... jestli je správné provede se výše uvedený kód (zapíše session) a přesměruje se javascriptem na danou stránku
hiska
Profil
spíš jestli existuje nějaký důvod proč by se session nemělo zapsat? nastvení prohlížeče například? přílis přihlášení, naka duplikace?
Radek9
Profil
Nemělo by místo $_SESSION[firma_log] být $_SESSION["log"]? Pokud ne, tak tě ještě jednou prosím o celý (Tím myslím od <?php do ?>) kód.
Edit: nebo taky místo $_SESSION[firma_log] toto: $_SESSION["firma_log"]
hiska
Profil
prihlaseni:
<?
session_start();
include "functions.inc.php";
db_connect();
$title = "Firmy - $xtitle";
$description = "firmy, katalog firem, adresář, kontakty";
$keywords = "firmy,katalog firem, adresar, kontakty";
include "zahlavi.inc.php";
?>

<div id="main">  
  
  <!-- content -->
  <div id="content">
  
 
  <h1 class="homepage">Přihlášení</h1>
  <p>Přihlášení slouží k editaci firemních údajů</p>
  
  <?

$msg_error = "";
if ($_POST[form_sent]=="true" AND $_POST[auth_login]!="" AND $_POST[auth_heslo]!="")
{
    $vysledek = MySQL_Query("SELECT heslo, kod, idcislo FROM pcz_firmy 
    WHERE idcislo = '$_POST[auth_login]' LIMIT 1");       
    
    while ($zaznamy = mysql_fetch_array($vysledek)):            
    if ($zaznamy[heslo] == $_POST[auth_heslo]):
                              
        $_SESSION["firma_log"] = "ano";                
        $_SESSION["firma_idcislo"] = $_POST[auth_login];
        $_SESSION["firma_kod"] = $zaznamy[kod];        
                      
        $cil = "admin_hp.php?kod=" . $zaznamy[kod] . "&idc=" . $zaznamy[idcislo];
        ?><script>window.location.replace("<? echo $cil; ?>"); </script><?
        //echo "lsdfkjdslkf";         
        exit;                        
    else:
        $msg_error = "Špatné přihlašovací údaje (heslo)";
    endif;
    
    if($radek!="ano"){ $msg_error = "Špatné přihlašovací údaje (login)"; }
         
  endwhile;		    
}
Mastodont
Profil
if ($_POST[form_sent]=="true" AND $_POST[auth_login]!="" AND $_POST[auth_heslo]!="")

má pochopitelně být
if ($_POST['form_sent']=="true" AND $_POST['auth_login']!="" AND $_POST['auth_heslo']!="")
hiska
Profil
to nehraje zadnou roli skript se dostane az k:

 $_SESSION["firma_log"] = "ano"; 
fajzen
Profil
ak má užívateľ v prehliadači zakázané ukladanie cookies, nepôjdu ani sessions
Lamicz
Profil
To je ale hnus, velebnosti...
1) Proč je tam while, když ten user bude jeden (předpokládám, je tam navíc LIMIT 1) ?
2) Proč tam není u toho WHERE jestě rovnou něco jako AND heslo=mysql_real_escape_string($_POST['auth_heslo']) ?
atd...
To celý se dá napsat do třetiny velikosti se třetinou proměnných ;)

Jinak k problému:
Ten JS se mi nelíbí, použil bych PHP fci
header();
(ale nesmí být poslány hlavičky) nebo ten JS upravil na
window.document.location.href
tiso
Profil
Takže k tomu katalógu (http://diskuse.jakpsatweb.cz/.sandbox/?action=vthread&forum=26&topic=97815&page=-1) je aj databáza hesiel... To by už mohlo byť pre niekoho zaujímavé...

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: