Autor Zpráva
cernajs
Profil
Zdravím prosím vás sem úplný začátečníka potřeboval bych na stránky udělat přihlášení třeba pomocí souboru a nevím jak na to tak jestli by mi někdo byl ochotný napsat jak to má být. Mockrát děkuji.
Alphard_
Profil *
Pomocí souborů je to obtížnější než s databází. Řešení s db je v místním FAQ, ale jen to přihlášení, registraci si musíte udělat sám (ale je to jen jednoduchý insert).
cernajs
Profil
Mě by stačilo jenom do textáku napsat třeba jméno heslo a tím by se daná osoba přihlásila ale nevím jak an to vůbec.
martin1312
Profil
Pred 2 dnami som nieco take riesil, na nete je vela dostupnych rieseni ale nic mi nevyhovovalo tak som si nakodil nieco sam. Potreboval som to na prihlasenie do administracie jednej mojej stranky, takze je to urcene iba pre jedneho pouzivatela. Nemam to nejak specialne testovane na blbovzdornost, ale kedze to pouzivam iba ja, tak mi to staci.

A teraz nieco blizsie ku scriptu:
-prihlasovanie a overovanie, ci je uzivatel prihlaseny je riesene pomocou SESSION
-heslo a uzivatelske meno su ulozene v subore config.php
-stranka prihlasenie.php obsahuje prihlasovaci formular, ten sa spracuje suborom login.php. Ak heslo suhlasi, presmeruje na stranku index.php - tajna stranka, ktoru mozu vidiet iba prihlaseny ludia.
- ak login.php vyhodnoti zadane udaje ako nespravne, presmeruje spat na stranku prihlasenie.php a tam sa objavi aj upozornenie cervenou farbou, ze su zadane zle prihlasovacie udaje.
-ak chces mat viac stranok, ktore mozu vidiet iba prihlaseny ludia, kazdu stranku uprav ako je upraveny index.php (hore je php kod na overenie platnosti session)
-po odchode zo stranky je potrebne sa odhlasit. Odhlasit sa mozes aj na stranke prihlasenie.php (tam sa overuje, ci je uzivatel prihlaseny alebo nie) alebo aj na hociakej inej stranke, pridaním odkazu s linkom www.svojastranka.sk/login.php?odhlasit

zdrojaky:

prihlasenie.php
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Prihlasenie</title>
<style type="text/css">
<!--
.red {color: #FF0000}
-->
</style>
</head>
<body>
<?php 
session_start();
$error = htmlspecialchars($_GET['error']);
if($error == '1')
    echo '<p class="red">Nezadali ste správne prihlasovacie údaje</p>';

 $logout = htmlspecialchars($_GET['logout']);    
if($logout == '1')
    echo '<p class="red">Boli ste odhlásený.</p>';
    
 if((isset($_SESSION["prihlaseny"])) && $_SESSION["prihlaseny"]===1)    {
    echo '<p class="red">Ste prihlásený:</p>';
    echo '<p>- <a href="http://'.$_SERVER["HTTP_HOST"].'/login.php?odhlasit">Odhlásiť</a></p>';
    echo '<p>- <a href="http://'.$_SERVER["HTTP_HOST"].'/index.php">Utajená stránka</a></p>';
    }

 ?> 
<form action="login.php" method="post">
  <label for="meno">Prihlasovacie meno: </label>
  <input type="text" name="user_meno" id="meno" />   
  <label for="heslo">Heslo: </label>
  <input type="password" name="user_heslo"  id="heslo"/>
  </p>
  <p>
    <input type="hidden" name="action" value="login" />
    <input name="submit" id="odoslat" type="submit" value="Prihl&aacute;siť sa" />
  </p>
</form>
</body>
</html>

login.php

<?php 
session_start();

 include 'config.php';    //obsahuje prihlasovacie meno a spravne heslo

 $user_meno = htmlspecialchars($_POST['user_meno']);    //osetrenie vstupu z formularu pred nebezpecnymi znakmi
$user_heslo = htmlspecialchars($_POST['user_heslo']);    //osetrenie vstupu z formularu pred nebezpecnymi znakmi



 if(isset($_POST["submit"])){    //ak je odoslany formular
    if($_POST["action"] == 'login'){    //kontrola hidden imputu
        if($user_meno!='' && $user_heslo!=''){    //ak nie su prazdne polia mano a heslo
            if(($user_meno == $uzivatel) && ($user_heslo == $heslo)){        //ak je meno zhodne s prihlasovacim menom, a heslo so spravnym heslom
                session_regenerate_id();    //ochrana pred utokom na session        
                $_SESSION["prihlaseny"]=1;                
                header("Location: http://".$_SERVER["HTTP_HOST"]."/index.php");    //presmeruje sa na index stranku administracie
                exit;
                }
            else {
            header("Location: http://".$_SERVER["HTTP_HOST"]."/prihlasenie.php?error=1");    //ak nie je spravne meno a heslo, presmeruje spat na prihlasovaci formular (tam sa vypise chybova hlaska)
            exit;
            }
        }
        else {
            header("Location: http://".$_SERVER["HTTP_HOST"]."/prihlasenie.php?error=1");    //  -||-
            exit;
         }            
    }
    else {
        header("Location: http://".$_SERVER["HTTP_HOST"]."/prihlasenie.php?error=1");    //  -||-
        exit;            
    }
}

 if(isset($_GET["odhlasit"])){    //odhlasenie
    session_destroy();
    header("Location: http://".$_SERVER["HTTP_HOST"]."/prihlasenie.php?logout=1"); //ak sa odhlasuje, presmeruje na prihlasovaci formular, nastavi prem. logout
    exit;
}


 ?>

config.php
<?php

 $uzivatel = "nejake_uzivatelske_meno";    //uzivatel
$heslo = "123";        //heslo uzivatela

 ?>

index.php
<?php session_start();  if(!isset($_SESSION['prihlaseny'])) die ('Nepovoleny pristup');?> <!--kontrola, ci si stranku pozera prihlaseny clovek-->
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Stránka dostupná iba pre prihlásených</title>
</head>

 <body>
<h1>Stránka dostupná iba pre prihlásených
</h1>
<p>Nejaký tajný obsah 
</p>
</body>
</html>
cernajs
Profil
martin1312:
Díky moc sice už mám něco přes setcookie ale to není nějak ošetřeno takže určitě si mi moc pomohl s tímhle.

Ještě jednou díky :-)
Joker
Profil
cernajs:
Poznámka, v Nejčastějších potížích s PHP je skript pro registraci a přihlašování uživatelů, včetně obsáhlých komentářů. Ten nevyhovuje?
cernajs
Profil
Joker:
Nechtěl sem to dělat přes db kvůli jednomu člověku kdyby jich tam mělo mít přihlášení více tak bych to přes ní udělal.
martin1312
Profil
cernajs:
jasne, da sa to aj cez COOKIE. To by si potom overoval ci je nastavena premenna $_COOKIE['nieco'] . V podstate by to vyzera tak isto ako to moje so session, akurat by si to ponahradzal premennou cookie.
Podla mna je ale pouzitie Session bezpecnejsie, preto to mam tak, ako mam.
A som rad, ze ti to pomohlo.

Joker:
aj ked to nebolo adresovane mne, ale pomohol si mi :D take prihlasovanie s registraciou som hladal (na ine vyuzitie, ako ten co som dal ja).
Joker
Profil
martin1312:
aj ked to nebolo adresovane mne, ale pomohol si mi
Svým způsobem bylo :-)
Jsem zastáncem toho psát do příspěvků i informace, které sice nejsou nezbytné k řešení aktuálního problému aktuálního tazatele, ale nejspíš by tazateli pomohly se vyvarovat dalších problémů, anebo se vyhnout stejnému problému příště, anebo by byly užitečné jiným lidem se stejným problémem.
Těší mě, že to funguje.

edit: No fuj, hrubka. Opraveno.
martin1312
Profil
aj tak dik :)

ak mozem jednu otazku ohladom prihlasovania a ukadania hesla do databazy. je nejaky rozdiel medzi tym, ked v php urobim MD5($heslo) a to poslem to db alebo mam v db stlpec MD5'heslo' ? Niekde som to takto videl, ale uz to neviem najst.

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: