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  
Sifilis

Syntax error

Recommended Posts

Zdravím,

 

mám tu menší problém, rád bych kdybyste to čeknuli :)

 

config.php

mysql_connect("******", "************", "*************");
mysql_select_db("*********");

 

Hlavní script:

<html>
<head>
<?php include_once("../page/head.php") ?>
</head>
<body>
<div style="text-align:center">
<?php
include_once("../config.php");
$jmeno = $_POST["jmeno"];
$heslo = $_POST["heslo"];
$accounts = mysql_query("SELECT * FROM accounts WHERE nick='".$jmeno."' AND  heslo='".$heslo."' ");
$shoda=mysql_num_rows($accounts);
if(strlen($jmeno)<1 || strlen($heslo)<1){
echo "<br><br><br><br><br><h2>Musíte vyplnit všechny údaje.</h2> <script> setTimeout(\"history.back()\", 2152);</script>";
}
else($shoda==0){
echo "<br><br><br><br><br><h2>Vámi zadané přihlašovací údaje se neshodují.</h2> <script> setTimeout(\"history.back()\", 2152)</script>";}



?>
</div>
</body>
</html>

 

Chybová hláška:

 

Parse error: syntax error, unexpected '{' in /home/free/ic.cz/g/ganner/root/www/page/login.php on line 16

 

Díky za rady :)

Share this post


Link to post
Share on other sites

NIKDY nedavej za else podminku!

Nedava se tam, mas if (podminka) {neco;} kdyz chces dalsi podminku, tak pouzij elseif (podminka) {neco} a nakonec jako treti moznost das else - to je to co ti zbyde, za to podminka neni, tedy jen else {neco}, nebo muzes zkoncit u elseif a nakonec misto else dat endif;

BUDE TO VYPADAT TAKTO:

<html>
<head>
<?php include_once("../page/head.php") ?>
</head>
<body>
<div style="text-align:center">
<?php
include_once("../config.php");
$jmeno = $_POST["jmeno"];
$heslo = $_POST["heslo"];
$accounts = mysql_query("SELECT * FROM accounts WHERE nick='".$jmeno."' AND  heslo='".$heslo."' ");
$shoda=mysql_num_rows($accounts);
if(strlen($jmeno)<1 || strlen($heslo)<1){
echo "<br><br><br><br><br><h2>Musíte vyplnit všechny údaje.</h2> <script> setTimeout(\"history.back()\", 2152);</script>";
}
elseif($shoda==0){
echo "<br><br><br><br><br><h2>Vámi zadané přihlašovací údaje se neshodují.</h2> <script> setTimeout(\"history.back()\", 2152)</script>";}

else {
echo 'vyplnili jste vse sparvne blabla';}

?>
</div>
</body>
</html>

ale udelal bych to cele trosku jinak:

<html>
<head>
<?php include_once("../page/head.php") ?>
</head>
<body>
<div style="text-align:center">
<?php
include_once("../config.php");
$jmeno = $_POST["jmeno"];
$heslo = $_POST["heslo"];
$accounts = mysql_query("SELECT * FROM accounts WHERE nick='".$jmeno."' AND  heslo='".$heslo."' ");
$shoda=mysql_num_rows($accounts);
if (!empty ($_POST)) {
 if(strlen($jmeno)<1 || strlen($heslo)<1){
 echo "<br><br><br><br><br><h2>Musíte vyplnit všechny údaje.</h2> <script> setTimeout(\"history.back()\", 2152);</script>";}

 elseif($shoda==0){
 echo "<br><br><br><br><br><h2>Vámi zadané přihlašovací údaje se neshodují.</h2> <script> setTimeout(\"history.back()\", 2152)</script>";}

 else {
 echo 'vyplnili jste vse sparvne blabla';}
}
?>
</div>
</body>
</html>

 

Podekovat mi muzes pomoci +rep :)

Edited by bombajs
  • Upvote 1

Share this post


Link to post
Share on other sites

+1rep :mid_bow_arrow:

 

S PHP začínám neznám všechny funkce jako je empty atp, ale díky tobě už empty znám takže dík :)

NP :)

Share this post


Link to post
Share on other sites

A co tohle? Já to vidím že bude chyba na řádce 12, ale posuďte profesionálové :)

<?php
if(strlen($nick)<1 || strlen($password)<1 || strlen($email)<1){
echo "<br /><br /><br /><br /><br /><h2>Musíte vyplnit všechny údaje které jsou označené hvězdičkou.</h2><script>setTimeout(\"history.back()\", 2500)</script>";
}
elseif($check_name==1){
echo "<br /><br /><br /><br /><br /><h2>Toto uživatelské jméno už někdo používá. </h2><script>setTimeout(\"history.back()\", 2500)</script>";
}
elseif($check_email==1){
echo "<br /><br /><br /><br /><br /><h2>Tento email už někdo používá. </h2><script>setTimeout(\"history.back()\", 2500)</script>";
}
elseif($check_email==0 || $check_name==0){
$insert = mysql_query("INSERT INTO accounts VALUES('" "', '".$nick."', '".$name."', '".$subname."', '".$password."', '".$birth_year."', '".$email."', '".$town."', 3) ");
if($insert == "true")
{
	echo "<br /><br /><br /><br /><br /><h2>Byli jste úspěšně registrování, nyní se můžete přihlásit <a href=\"/index.php\">Zde</a>.</h2>";
}
else
{
	echo "<br /><br /><br /><br /><br /><h2> Registrace selhala.</h2><script>setTimeout(\"history.back()\", 2500)</script>";
}
}
else{ 
echo "<br /><br /><br /><br /><br /><h2>Registrace selhala.</h2><script>setTimeout(\"history.back()\", 2500)</script>";
}
?>

Tady nic nezadávám protože tam je ID a v DB mám na tento sloupec nastavené AUTO_INCREMENT:

<?php
("INSERT INTO accounts VALUES('" "',.............);
?>

Edited by Sifilis

Share this post


Link to post
Share on other sites

A co tohle? Já to vidím že bude chyba na řádce 12, ale posuďte profesionálové :)

<?php
if(strlen($nick)<1 || strlen($password)<1 || strlen($email)<1){
echo "<br /><br /><br /><br /><br /><h2>Musíte vyplnit všechny údaje které jsou označené hvězdičkou.</h2><script>setTimeout(\"history.back()\", 2500)</script>";
}
elseif($check_name==1){
echo "<br /><br /><br /><br /><br /><h2>Toto uživatelské jméno už někdo používá. </h2><script>setTimeout(\"history.back()\", 2500)</script>";
}
elseif($check_email==1){
echo "<br /><br /><br /><br /><br /><h2>Tento email už někdo používá. </h2><script>setTimeout(\"history.back()\", 2500)</script>";
}
elseif($check_email==0 || $check_name==0){
$insert = mysql_query("INSERT INTO accounts VALUES('" "', '".$nick."', '".$name."', '".$subname."', '".$password."', '".$birth_year."', '".$email."', '".$town."', 3) ");
if($insert == "true")
{
	echo "<br /><br /><br /><br /><br /><h2>Byli jste úspěšně registrování, nyní se můžete přihlásit <a href=\"/index.php\">Zde</a>.</h2>";
}
else
{
	echo "<br /><br /><br /><br /><br /><h2> Registrace selhala.</h2><script>setTimeout(\"history.back()\", 2500)</script>";
}
}
else{ 
echo "<br /><br /><br /><br /><br /><h2>Registrace selhala.</h2><script>setTimeout(\"history.back()\", 2500)</script>";
}
?>

Tady nic nezadávám protože tam je ID a v DB mám na tento sloupec nastavené AUTO_INCREMENT:

<?php
("INSERT INTO accounts VALUES('" "',.............);
?>

$insert = mysql_query("INSERT INTO accounts VALUES('" "', '".$nick."', '".$name."', '".$subname."', '".$password."', '".$birth_year."', '".$email."', '".$town."', 3) ");

Uprav na

$insert = mysql_query("INSERT INTO accounts VALUES ('', '".$nick."', '".$name."', '".$subname."', '".$password."', '".$birth_year."', '".$email."', '".$town."', 3)");

A na závěr rada do života: Posílej i ty chyby co ti to píše...

Edited by zikmund
  • Upvote 1

Share this post


Link to post
Share on other sites

A na závěr rada do života: Posílej i ty chyby co ti to píše...

určitě, kolikrát jsou hodně důležity pro nalezení problému...

Share this post


Link to post
Share on other sites

cs, jsem tu zas :)

takže, dneksa mám problém s cookie soubory :)

<?php
$id = Mysql_fetch_Array($accounts);
if(!isset($_COOKIE["id"])) setcookie ("id", $id["id"]);
echo $_COOKIE["id"];
?>

Tady mi to tu hodnotu vypíše, ale když volám:

<?php
echo $_COOKIE["id"];
?>

tak mi to nic nevipíše.

 

BTW:

Jak ověřím jestli cookie existuje??

Edited by Sifilis

Share this post


Link to post
Share on other sites

if($_COOKIE["id"){
echo "existuje ";
}else{
echo "ee";
}

 

skus :D

chápeš že tohle nic neudělá to je to samé jak kdybs udělal toto:

<?php
if($proměnná){
echo "existuje ";
}
else{
echo "ee";
}
?>

není tam žádná podmínka, kterou by to mohlo testovat, jenom dosadíš proměnnou....

 

BTW: Když už někomu radíš tak si daj pozor aspon na syntaxi...

Edited by Sifilis

Share this post


Link to post
Share on other sites

Zkus funkci empty...Já to teda doteď dělal (jestli mě paměť neklame) přes isset, ale jak sem pochopil, tobě to přes isset nejde. Zkus "empty"

 

EDITED: Teď sem si to po tobě přečetl a asi vim kde máš chybu...normal používej isset a na zápis cookies pak:

 

setcookie("id", $id["id"], time() + 60*60*24*365, "/", "", "0");

 

PS: Snad zapisuješ do COOKIES i hashovany heslo pro kontrolu, jestli cookies nebylo odcizeno ;)

Edited by zikmund

Share this post


Link to post
Share on other sites

Zkus funkci empty...Já to teda doteď dělal (jestli mě paměť neklame) přes isset, ale jak sem pochopil, tobě to přes isset nejde. Zkus "empty"

 

EDITED: Teď sem si to po tobě přečetl a asi vim kde máš chybu...normal používej isset a na zápis cookies pak:

 

setcookie("id", $id["id"], time() + 60*60*24*365, "/", "", "0");

 

PS: Snad zapisuješ do COOKIES i hashovany heslo pro kontrolu, jestli cookies nebylo odcizeno ;)

nehashuju, mohl bys mi ukázat jak zšifrovat celou cookie a pak ji zase rozšifrovat? nemůžu nato najít žádnou funkci .)

Share this post


Link to post
Share on other sites

nehashuju, mohl bys mi ukázat jak zšifrovat celou cookie a pak ji zase rozšifrovat? nemůžu nato najít žádnou funkci .)

Zašifrování: base64_encode

Odšifrování: base64_decode

...

Marná se mi taky nezdá jedna funkce nějakýho "amatéra", kterej do toho zapojil i šifrování s klíčem, takže pro každého můžeš udělat jiný klíč (například zašifrovanou/hash IP adresu) a potom by to prakticky mělo být celé v suchu ;).

EDITED: zapomněl sem přidat odkaz na tu funkci...Funkce od amatéra

Edited by zikmund

Share this post


Link to post
Share on other sites

Base64 považovat za šifru a mluvíš tu o amatérovi, který na to šel s funkční XOR šifrou ? Použít base64 je bezpečnostní sebevražda.

znáš lepší? já ne....

 

BTW:

Zikmund, já tou cookie posílám ID uživatele a IP adresu, podle těchto údajů si ověřím jestli byl uživatel přihlášen, nebo nebyl, v podstatě jestli u něj najdu tuhle cookie tak je přihlášen, když ne tak není a pošle ho to zpět na login.

Edited by Sifilis

Share this post


Link to post
Share on other sites

znáš lepší? já ne....

 

http://cz.php.net/mcrypt nebo kterákoliv hashovací funkce v chytrém použití může dobře zabezpečit přístup. Ostatně posílat klientovi heslo, byť zašifrované je zbytečné.

Share this post


Link to post
Share on other sites

dík :)

 

setcookie("id", $id["id"], time() + 60*60*24, "/", "", "0");

takhle bude ta cookie platit 1 den že?

 

Existuje nějaká funkce která odstraní cookie?(Chci napsat tlačítko "odhlášení" a mělo by fungovat tak že zmaže tuhle cookie a automaticky ho to hodí na index)

Edited by Sifilis

Share this post


Link to post
Share on other sites

Base64 považovat za šifru a mluvíš tu o amatérovi, který na to šel s funkční XOR šifrou ? Použít base64 je bezpečnostní sebevražda.

Když seš tak chytrej, tak sis asi všimnul, že to slovo amatér sem dal do uvozovek, což znamená, že ho neberu jako amatéra, ale myslel sem to tak, že není členem týmu, který pracuje na PHP... A když to bereš takhle, tak ono jakýkoli šifrování, který jde z5 rozšifrovat je na nic, protože když hacker ví, přes co to šifruješ, nemá problém zjistit zpětně co šifruješ (pokud používáš klíč, je to už složitější)... Hesla šifrovat je blbost, protože hesla se hashujou.

 

Jinak pro logout nastav "trvanlivost" cookies na zápornou hodnotu...

Edited by zikmund

Share this post


Link to post
Share on other sites

Jinak pro logout nastav "trvanlivost" cookies na zápornou hodnotu...

ok, takže jenom nastavím záporný čas uplinutí ona se smaže?

(Sem si to teď někde pročítal, jenom jestli jsem to pochopil :) )

Share this post


Link to post
Share on other sites

A když to bereš takhle, tak ono jakýkoli šifrování, který jde z5 rozšifrovat je na nic, protože když hacker ví, přes co to šifruješ, nemá problém zjistit zpětně co šifruješ (pokud používáš klíč, je to už složitější)... Hesla šifrovat je blbost, protože hesla se hashujou.

 

Každá šifra musí mít klíč. Jak jinak bys jí chtěl dešifrovat?

 

Jinak existují šifry, kde bez klíče nikdy nezískáš původní text. Teda aspoň ne za tvého života.

Share this post


Link to post
Share on other sites

ok, takže jenom nastavím záporný čas uplinutí ona se smaže?

(Sem si to teď někde pročítal, jenom jestli jsem to pochopil :) )

Přesně tak... Jinak fakt se zamysli, jestli nechceš ty hesla hashovat a ukládat je zahashovaný. Pak když budeš mít navštěvovanost, někdo tě bude chtít možná i hacknout...a když se mu to podaří a najde v DB hesla třeba 200lidí, vysvětluj si jim to pak. Pak všech 200lidí musí měnit všude hesla. Navíc tím, že heslo nehashuješ nic nezískáš (maximálně tak při ztraceným heslu, ale to můžeš dát uživateli, aby si udělal jiné heslo). Možná ti teď příjdu, že kecám blbosti, ale myslím to vážně ;).

 

EDITED:

Každá šifra musí mít klíč. Jak jinak bys jí chtěl dešifrovat?

 

Jinak existují šifry, kde bez klíče nikdy nezískáš původní text. Teda aspoň ne za tvého života.

Rozhodně to nemění nic na tom, že na šifrování hesel se z bezpečnosti používají jednosměrný šifry.

Edited by zikmund

Share this post


Link to post
Share on other sites

Rozhodně to nemění nic na tom, že na šifrování hesel se z bezpečnosti používají jednosměrný šifry.

 

Pojem jednosměrná šifra neexistuje. Správně jsou jednosměrné funkce - hašovací funkce.

 

Nejlepší kombinace je zahalovat heslo společně se solí. To zvyšuje o dost bezpečnost.

 

Doporučuji k přečtení pro ukládání hesel v PHP - http://php.vrana.cz/ukladani-hesel.php

Share this post


Link to post
Share on other sites

Pojem jednosměrná šifra neexistuje. Správně jsou jednosměrné funkce - hašovací funkce.

 

Nejlepší kombinace je zahalovat heslo společně se solí. To zvyšuje o dost bezpečnost.

 

Doporučuji k přečtení pro ukládání hesel v PHP - http://php.vrana.cz/ukladani-hesel.php

Pokud tj na mě, tak si to zbytečně psal. Já umím hashovat hesla a taky je hashuju. Sifilis je nehashuje a já ho přemlouval, ať je hashuje.

 

A pokud tu tvrdíš, že HASH není jednosměrná šifra..hm... Google. A když si to tak přebereš...co dělá šifra? Zašifruje slovo. Jednosměrná potom už nejde rozšifrovat a obousměrná jde opět rozšifrovat...

Co dělá hash? Jednosměrně ty zašifruje (Zahashuje) heslo...

Share this post


Link to post
Share on other sites

Každá šifra jde "rozšifrovat", bohužel se rozšifrování kvalitní šifry nedožiješ. Pokud vím jediná šifra která nejde rozšifrovat je ta která má stejně dlouhý klíč jako je obsah, to pak stačí obyčejná cezarova šifra a nikdo to nerozšifruje....ale má to jeden velkej problém, hádejte jakej....

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  

×