Jump to content
  • Announcements

    • Xmat

      Pravidlo pro postování v TTT

      Do sekce Tipy, triky, tutoriály nepatří žádné dotazy.   Postujte sem vaše návody, tipy a různé další věci jež uznáte za vhodné sdělit zdejšímu osazenstvu, ale veškeré dotazy směřujte do sekce Všeobecná diskuse.
    • Replik

      Seznam návodů a důležitých témat v této sekci

      Pro lepší přehlednost jsem vytvořil tento seznam, který vás, méně zkušené, lépe provede touto sekcí. Věřím, že zde najdete, co hledáte. Vypsané jsou návody, které jsou oficiálně uznané jako návody. Běžné diskuze, které neposkytují postupy a rady zvěřejněny nejsou.   Instalace vlastního MaNGOS Serveru Díky těmto návodům budete (měli by jste být) schopni vytvořit a následně spustit váš vlastní server. Nastavení je pro verze s i bez datadisku.   Instalace MaNGOS Serveru (bez datadisku TBC) - Autor Benny Instalace MaNGOS Serveru (s datadiskem TBC) - Autor Malfik Instalace MaNGOS Serveru v prostředí Linux - Autor charlie Instalace MaNGOS Serveru v prostředí Linux - Autor kupkoid   Chyby a jejich řešení při přihlašování k serveru - Autor Cybe   Zálohování uživatelských dat   Dávkový soubor (BAT soubor) pro vytvoření SQL záloh - Autor Replik   Kompilování - tvoření vlastních release (revizí)   Tvorba kompilací pro Win32 (MangoScript) - Autor bLuma   Ostatní - těžko zařaditelné, ale neznamená to, že nejsou dobré   VIP Systém - Autor charlie Tvorba Webových stránek pro MaNGOS - Autor zahuba Tvorba teleportačních NPC (MangoScript) - Autor Replik Registrační web (původně předělaná SPORA) Funkční pro Antrix i MaNGOS - Autor Replik Nastavení a spuštění Minimanager pro MaNGOS - Autor BlackMartin Nastavení MaNGOS Website - Autor Artorius   Samozřejmě jsou zde i jiné návody, ale tyto jsou nejvíce používané, proto věřím, že vám budou nápomocné. Tuto sekci budeme upravovat podle potřeby. Pokud by jste něco nenašli nebo si nevěděli rady, hledejte na fóru a teprve potom založte vlastní topik. Pokud nějaký autor vytvoří kvalitní návod a chtěl by ho zveřejnit i v tomto seznamu, doporučuji, aby mi napsal zprávu skrze PM.   Díky a přeji hezký den na WoWResource   Replik
    • Aristo

      Příspěvky tam, kde nemají co dělat

      Dodržujte zákaz přispívání do topiků s repaky pokud si to zakladatelé nepřejí!! Opakované psaní příspěvků bude trestáno warnem.
    • Aristo

      Používání spoilerů

      Poslední dobou má většina uživatelů fora zvláštní nutkání postovat extrémně dlouhé texty nebo kódy, které zabírají v nejedenom případu i 80% obsahu celé stránky a hodně tak zvedají nepřehlednost v topiku. Chtěl bych všechny uživatele požádat, aby při postování citací, jakýchkoliv kódů, errorů, atp... delších než 30 řádků používali funkci spoileru.   Funkci vyvoláte příkazem [spoiler] text [/spoiler]   Ukázka:  
Sign in to follow this  
kejhal

php - chranena stranka

Recommended Posts

zdravim,nekde na internetu jsem nasel skript jak chranit stranku, aby se na ni nemohl nikdo dostat bez prihlaseni, jenomze ja mam nejaky problem a se sessionem jeste moc zkusenosti nemam... pri prihlaseni zadam bud spravne jmeno a heslo a vypise se mi chyba co je v prvnim spoileru a potom me to presmeruje zpet na index.php coz je prvni formular, kdyz zadam spatne heslo necha me to na prihlaseni1.php a opet mam chybu ktera je hned podtimto textem... ale zustanu na prihlaseni1.php tak jak to ma byt...

 

chyba

 

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at D:\\xampp\htdocs\domaci_web\prihlaseni1.php:10) in D:\\xampp\htdocs\domaci_web\ochrana.php on line 11

 

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at D:\\xampp\htdocs\domaci_web\prihlaseni1.php:10) in D:\\xampp\htdocs\domaci_web\ochrana.php on line 11

 

 

hlavni formular - index.php

 

<body>

<center>

<h1>Přihlášení do domácího webu</h1>

<form action="prihlaseni1.php" method="post">

Jméno: <input type="text" name="jmeno" /><br />

Heslo: <input type="password" name="heslo" /><br />

<input type="submit" value="Přihlásit se" /></center>

</body>

 

 

zpracovani prihlasovacich udaju pomoci db - prihlasnei1.php

 

<body>

<?php

//includy

include ('db_config.php');

 

require "ochrana.php";

chranit( false );

 

//ulozeni jmena a hesla do promenne

$jmeno = ($_POST['jmeno']);

$heslo = ($_POST['heslo']);

 

//db spojeni a kontrola

$db_spojeni = mysqli_connect ($db_host, $db_jmeno, $db_heslo, $db_db, $db_port);

 

//kontrloa db spojeni

if (!$db_spojeni)

{

echo '<br />';

echo 'Spojeni se nezdařilo...';

echo '<br />';

echo 'Prosím kontaktujte administrátora webu';

echo '<br />';

echo 'Chyba: ', mysqli_connect_error();

}

 

//zasladni sql dotazu

$sql_dotaz = mysqli_query ($db_spojeni, 'SELECT jmeno, heslo FROM uzivatele');

 

//ulozeni promennych sloupcu

$radek = mysqli_fetch_array($sql_dotaz);

$db_uzivatelske_jmeno = $radek['jmeno'];

$db_uzivatelske_heslo = $radek['heslo'];

 

if ($jmeno == $db_uzivatelske_jmeno and $heslo == $db_uzivatelske_heslo)

{

$_SESSION["prihlasen"] = "ano";

echo '<meta http-equiv="refresh" content="1;url=http://localhost/domaci_web/domu.php">';

}

else

{

?>

<center>

<br />

<h1>Přihlášení do domácího webu</h1>

Heslo nebo uzivatelske jmeno je spatne, prosim zkuste to znovu...

 

<form action="prihlaseni1.php" method="post">

Jméno: <input type="text" name="jmeno" /><br />

Heslo: <input type="password" name="heslo" /><br />

<input type="submit" value="Přihlásit se" />

</center>

<?php

}

?>

</body>

 

 

a tady je ta ochrana... na netu psali ze se ten kod nema uzavirat (nema se davat ?>) ale pise mi to chybu, ze kod neni uzavren... takze to nefunguje tak ani tak..

ochrana.php

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'>http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">'>http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Untitled Document</title>

</head>

 

 

<body>

<?php

session_start(); //pro uchovani prihlaseni

 

function chranit($zapnuto=true)

{

if($zapnuto)

{

if( $_SESSION["prihlasen"]!="ano" ) presmeruj("index.php");

}

}

 

function presmeruj($url)

{

if (! headers_sent() )

{

header("Location: $url");

}

else

{

echo '<meta http-equiv="refresh" content="0;url='.$url.'">';

echo '<script language="JavaScript" type="JavaScript">window.location="'.$url.'";</SCRIPT>';

}

header("Connection: close");

exit;

}

 

</body>

</html>

 

 

a chranena stranka domu.php vypada takto...

 

 

<!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>Domu</title>

</head>

 

<body>

<?php

require "ochrana.php";

chranit();

?>

<h1>Jsi doma</h1>

</body>

</html>

 

 

takze pro shrnuti, po zadani spravneho jmena a hesla me to nepusti na chranenou stranku, vypise se chyba a presmeruje me to na zacatek... kdyby nekdo vedel jak na to, byl bych strasne moc vdecny, dekuju

Share this post


Link to post
Share on other sites

Píše ti to že v nějakém dalším PHPčku maš už jednu session otevřenou.. :) koukni do erroru.. :)

 

+ cely ten kod se mi nějak nelíbí.. když tak překopu a pošlu.. :)

Edited by demolisnman

Share this post


Link to post
Share on other sites

to bych rad vedel jakou, protoze zadnej jinej session otevrenej neni.. nebo ne aspon mnou i v prihlaseni1.php neni zadny session zapsanej, a navic se session jeste moc neumim...

e: a jinak kdyby jsi byl vazne tak laskav a dokazal s tim neco udelat.. protoze je to takove moje prvni vetsi dilo... vim ze je tam soubor prihlasnei1.php uplne zbytecne, stacilo to dat do index.php... nj, takhel to pisou ti co se to naucili z knihy :) ted jsem si uvedomil ze tam mam jeste jednu blbost... prihlaseni se porovnava s udaji v DB, jenze ja tam mam ulozeny jenom prvni radek v tabulce a dalsi ne... a to se mi nejakej nepovedlo aby se ulozili vsechny...

Edited by kejhal

Share this post


Link to post
Share on other sites

Minutu ticha za google translator a ostatní...

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at D:\\xampp\htdocs\domaci_web\prihlaseni1.php:10) in D:\\xampp\htdocs\domaci_web\ochrana.php on line 11

Přeloženo lidsky:

Funkce session_start vyvovala varování! Nemohu odeslat session cookie - hlavičky již byly odeslány (Výstup textu začal v souboru prihlaseni1.php na řádku 10). Chyba způsobena v souboru ochrana.php na řádku 11.

 

Důvod chyby: HTTP komunikace funguje tak, že na začátku jde několik řádků textu tzv HTTP hlavičky, mezi nimi je i nastavení cookies u klienta a funkce session_start jednu cookie odesílá. Ovšem pokud klientovi pošleš nějaký text tak se už museli odeslat hlavičky (to jde jen na začátku komunikace, pak jde jenom obsah stránky). Takže jakýkoliv textový výstup (i mezery, ...) způsobí odeslání hlaviček. Řešení: volat session_start() před vším. V tomhle případě upravit soubory, aby na úplném začátku bylo

<?php
session_start();
require_once 'ochrana.php';
?>
...

Share this post


Link to post
Share on other sites

dekuju, funguje to a pustilo me to do chranene stranky, ale porad se vypisuji chyby a nevim co prepsat, zmenit nebo co... kdyby toto mohla byt posledni vec, tak bych byl velice vdecny...

 

prozmenu toto:

 

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at D:\xampp\htdocs\\domu.php:9) in D:\xampp\htdocs\domaci_web\domu.php on line 10

 

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at D:\xampp\htdocs\\domu.php:9) in D:\xampp\htdocs\domaci_web\domu.php on line 10

Edited by kejhal

Share this post


Link to post
Share on other sites

Takže něco jednodučiho :) Ke každe strance co potrebujes se prihlasis jen aincludujes:

za jmeno dosadis prihlasovaci jmeno za heslo dosadis prihlasovaci heslo celej kod uloz treba jako login.php a vzdy do kazed stranky kam potrebujes se dostat jen s prihlasenim das uplne nahoru vloyis include a mas to "

<?
 if ($_SERVER["PHP_AUTH_USER"] !="jmeno" || $_SERVER["PHP_AUTH_PW"] !="heslo"   )
 {
 header('WWW-Authenticate: Basic realm="pokus" ');
 header('HTTP/1.0 401 Unauthorized');
 echo "musite se prihlasit";
 exit;
 }


?>  

 

edit > asi sem te spatne pochopil .. ale pokud chces tohle pouzij .. jo a zkus si vymazat nebo povolit kukis pro tu stranku ?

Edited by D-link

Share this post


Link to post
Share on other sites

Proč to dělat tak složitě když stačí pár řádků do .htaccess a funguje to stejně ?

Share this post


Link to post
Share on other sites

aha,njn věčný problém freehostingů :) Dneska placený webhosting stojí pár korun..

Share this post


Link to post
Share on other sites

jo, moznost to je taky, ale ic.cz treba tuto funcki v htaccessu nedovoluje...

 

Než něco plácneš tak si to aspoň ověř. Navíc to mají detailně popsáno ve FAQ, jak to nastavit.

 

[5] Zaheslování složky

 

Zaheslování se skládá ze dvou souborů .htaccess a .htpasswd.

 

.htaccess

AuthUserFile /absosultní cesta/.htpasswd

AuthGroupFile /dev/null

AuthName "Sekce"

AuthType Basic

require valid-user

 

Do absolutní cesty napište cestu ke své složce např: /home/free/ic.cz/p/pepa/root/www/ pro účet pepa.ic.cz

 

.htpasswd

V tomto souboru jsou uložena uživatelská jména a hesla ve formátu

uživatel:heslo

uživatel2:heslo

 

Heslo si můžete zašifrovat zde

Share this post


Link to post
Share on other sites

jo, dobre tak to jde, ale kdyz uz se snazim neco vyrobit, tak me tu ti co to umi ukamenuji, ze je to tak blbost delat atd... chtel jsem neco zkusit udelat, potreboval jsem radu jak tady na to, stacilo rict treba reseni, nebo se nevyjadrovat...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

×