Autor Zpráva
leorond
Profil
Dobrý večer, již několikrát jsem přidával téma na tento web a myslím že spíš schytám X chytráckých poznámek o tom jak neumím hledat v google nebo jak jsem negramotný když sem píšu něco takového, tedy pokud někdo vůbec odpoví.

Udělal jsem si přihlášení na svůj web a funguje 100% na VPS přes xampp ale když web nahraji na hosting, po přihlášení se nic nestane. Sice se ověří v DB že login existuje a vyhodnotí ho jako správný ale nepřihlásí mne to, dostanu pouze bílou obrazovku bez chybové hlášky.

Pokud se tu najde někdo kdo by mi mohl pomoci najít chybu prosím.

funkce.php
//funkce:             login($user, $pass)
//vstupni hodnoty:    $user = string, uzivatel
//                    $pass = string, heslo (zahashovane funkci hashuj())
//vystupni hodnoty:   <nic>
//popis:              ulozi do cookies phpsessid
function login ($user, $pass) {
  session_regenerate_id();
  session_register("user", $user);
  session_register("pass", $pass);
}

//funkce:             prihlaseny()
//vstupni hodnoty:    <nic>
//vystupni hodnoty:   true -> je prihlaseny, false -> neni
//popis:              zjisti pres session, zda-li jsme prihlaseni
function prihlaseny() {
  $user = mysql_escape_string($_SESSION["user"]);
  $pass = $_SESSION["pass"];
  
  $rsrc_login = mysql_query("SELECT * FROM uzivatele WHERE user='$user' and pass='$pass'");
  if(mysql_num_rows($rsrc_login) != 0) {
    return true;
  } else {                           
    return false;
  }
}

admin.php
if(isset($_POST["btn_ok"])) //pokud bylo stisle tlacitko "submit", pri prichodu na tuto stranku
{                   
  $user = mysql_escape_string($_POST["user"]);  //asociace promenne $user
  $pass = hashuj($_POST["pass"]);               //promenna $pass se prozene nasi hashovaci funkci
  $rsrc_login = mysql_query("SELECT * FROM uzivatele WHERE user='$user' and pass='$pass'"); //dotaz na databazi, jestli existuje nejaky vysledek, s daty $user a $pass
  if(mysql_num_rows($rsrc_login) != 0) //uzivatel existuje
  {        
    login($user, $pass); //prihlasime ho
  } 
  else    //uzivatel neexistuje
  {                                    
    $error_login    =    "<div class='login_form'>Špatné uživatelské jméno, nebo heslo!!</div>";   //vypiseme chybovou hlasku
  }
}

Proč mi to funguje na localhost a na hostingu ne?
juriad
Profil
session_register:
This function has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0.
leorond
Profil
Takže pokud chápu tak jsem trochu pozadu ale měla by to napravit tato funkce ne?

function fix_session_register(){ 
    function session_register(){ 
        $args = func_get_args(); 
        foreach ($args as $key){ 
            $_SESSION[$key]=$GLOBALS[$key]; 
        } 
    } 
    function session_is_registered($key){ 
        return isset($_SESSION[$key]); 
    } 
    function session_unregister($key){ 
        unset($_SESSION[$key]); 
    } 
} 
if (!function_exists('session_register')) fix_session_register(); 



Pokud se pletu tak mne opravte :-D možná kdyby existovalo ještě lepší řešení :-/
juriad
Profil
Ne, stačí ty dvě řadky nahradit za:
$_SESSION['user'] = $user;
$_SESSION['pass'] = $pass;

Ale nevíme, kde jinde se ukáže problém, protože ten kód je evidentně postarší.
leorond
Profil
Ano starší je ale uložil jsem funkci do souboru funkce.php a nasměroval na něj index.php takže bych měl mít pokryté všechny problémy tohoto typu :)

Děkuji juriad
leorond
Profil
Prosím o uzavření tohoto téma.

Vyřešeno i pro ostatní.

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: