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  
Mousik

Bezpečné přihlášení

Recommended Posts

Potřeboval bych poradit , s přihlášení na webu. Potřeboval bych , aby se hráči mohli přihlásit jakoby na svůj account (musí to bejt pro trinity) .

Doufám , že mi někdo poradí :/(

 

edit : a potřeboval bych to tak , aby při otevření jakýhokoliv .php souboru se dřív ověřovalo přihlášení , a pokud nejni uživatel pžihlášen , tak gho to přesměruje na login.php

Edited by Mousik

Share this post


Link to post
Share on other sites

Použíj třeba sessions, jako např zde:

http://www.htmlite.com/US001.php

Než nastavíš session na přihlášeno, vytáhneš si z db account, porovnáš hashe hesel.

Potom do všech stránke includuješ soubor, ve kterém budeš ověřovat jestli má uživatel platnou session.

Share this post


Link to post
Share on other sites

Jenom bych dodal, že je důležité aby jsi použil seasons dříve, než server odešle jakákoliv data prohlížeči.

Share this post


Link to post
Share on other sites

axxa , nepomužeš mi ještě , jak to udělat na ten account ? jo a ještě bych potřeboval udělat , aby byli jako dvě stránky , že když uživatle má třeba gm level 3 nebo gm level 0 , aby to rozlišilo a odeslalo na různé stránky a třeba aby gm 0 nemohl přejít ručně na stránky pro gm level 3

Share this post


Link to post
Share on other sites

Tady to máš všechno z mého portálu, nesnažím se tvrdit že je to nejlepší možné řešení, ale funguje (minimálně fungovalo) ;)

 

login.php

<?php session_start(); ?>

<?php
session_unset();

require "db.php"; // připojení k databázi

if (empty ($_REQUEST['login']) OR empty ($_REQUEST['pass'])) // pokud nemáme žádná data ke zpracování, zobrazíme formulář
          {
?>
        <table>
            <form method="post" action="login.php">
                <tr><td>Login:</td><td><input type="text" name="login" size="20"></td></tr>
                <tr><td>Heslo:</td><td><input type="password" name="pass" size="20"></td></tr>
              <tr><td colspan=3><input type="submit" value="Odeslat" name="send"></td></tr>
            </form>
        </table>
<?php
          }
else
          {
          
          $sql = mysql_query("SELECT * FROM account  WHERE username = UPPER('$_REQUEST[login]') AND sha_pass_hash = SHA1(CONCAT(UPPER('$_REQUEST[login]'),':',UPPER('$_REQUEST[pass]'))) LIMIT 1"); 
          $row = mysql_fetch_array($sql); // podle zadaných údajů vybereme účet
              
              if(mysql_num_rows($sql)==0) //pokud to nic nenajde, účet neexistuje, končíme
                 {
                   die("Účet nebyl nalezen.<br>Není možné pokračovat.");
                 }
          
            if ($row['gmlevel'] < 1) // pokud uživatel není gm, vyplníme sessions takto. Jména proměnných a data do nich ukládaná si nastav jak chceš
              {
              $_SESSION["valid_id"] = $row['id'];
              $_SESSION["valid_user"] = $row['username'];
              $_SESSION["valid_time"] = time();
              echo "Jste přihlášen jako registrovaný uživatel <br>";
              }
            else if ($row['gmlevel'] >= 1) // uživatel má gm práva (nebo vip), nastavíme tyto sessions. Bude potřeba snížit level error_reportingu, jinak to bude později vyhazovat chybky když budeš kontrolovat jaké sessions jsou nastaveny
              {
              $_SESSION["valid_id"] = $row['id'];
              $_SESSION["valid_admin"] = $row['username'];
              $_SESSION["valid_time"] = time();
              echo "Jste přihlášen jako administrátor <br>";
              }
            else 
              {
              echo "Chyba při přihlašování.";
              }
              
          echo "<input type=button onclick='history.back()' value='Zpět'>";
          
          }
?>

 

logout.php

<?php session_start();

session_unset();
session_destroy();
echo "Byli jste odhlášeni. <br><a href='index.php'>Zpět</a>";
?>

 

zobrazení obsahu podle úrovně přihlášení

if ($_SESSION["valid_admin"])
  {
  echo "obsah pro administrátory";
  }
  else if ($_SESSION["valid_user"])
  {
  echo "obsah pro uživatele";
  }
  else
  {
  echo "obsah pro neregistrované";
  }

 

při zobrazování obsahu to můžeš libovolně kombinovat, např if ($_SESSION["valid_admin"] OR $_SESSION["valid_user"]) a pod. ;)

zase nezapomeň dát na každou stránku úplně nahoru <?php session_start(); ?>

pokud dáš na nějakou stránku pouze ověření valid_admina, přičemž obsah stránky bude zabalen do této podmínky, nezobrazí se nikomu kdo není přihlášen jako administrátor ;)

 

edit: překlep ;)

edit2: Jinak toto je pro mangos, ale pochybuji, že za tu dobu stihli změnit formát databáze accountů. pokud to stihli, uprav si to podle jejich wiki ;)

Edited by axxxa

Share this post


Link to post
Share on other sites

if ($_SESSION["valid_admin"])
  {
  echo "obsah pro administrátory";
  }
  else if ($_SESSION["valid_user"])
  {
  echo "obsah pro uživatele";
  }
  else
  {
  echo "obsah pro neregistrované";
  }

ještě se chci zeptat .. jak tady do toho místo textu narvu link na přesměrování na nějakej soubor (např. xxx.php) a na tom souboru se to zase skontrolovalo , jestli se opravdu jedná třeba o gm level 3

Share this post


Link to post
Share on other sites

Nebudeš přesměrovávat. Tohle už je vlastní stránka.

Prostě na každé stránce si ověříš, jestli má uživatel právo ji prohlížet, tzn, když uděláš stránku admin.php, na které bude

 

<?php session_start(); ?>
... html hlavička ...
<?php
if ($_SESSION["valid_admin"])
  {
?>
blablabla, administrační panel, cokoliv
<?
  }
else
{
?>
Vypadni!
<?php
}
?>

tak to tam nepustí nikoho kdo není přihlášen jako administrátor.

 

edit: pokud chceš po přihlášení přesměrovat, upravíš řádek

 

echo "Jste přihlášen jako administrátor <br>";

 

(to samé pro normálního uživatele)

 

a napíšeš tam třeba

 

echo "Pro pokračování klikněte <a href='xxx.php'>sem</a>. <br>";

Edited by axxxa

Share this post


Link to post
Share on other sites

jo tak ještě poslední otázka ....

ještě bych potřeboval , aby když se na tu stránku dostane někdo , kdo nejni přihlášený , aby ho to hodilo na login.php a nebo když je přihlášený a nemá gmlevel 3 , tak aby ho to hodilo na player.php

Share this post


Link to post
Share on other sites

tak si tam dej přesměrování, najdi si jak se to dělá třeba na jakpsatweb.cz, to už je html.

Prostě zase budeš mít

if ($_SESSION["valid_admin"])
  {
  echo "obsah pro administrátory";
  }
  else if ($_SESSION["valid_user"])
  {
  ?>
  --- nějaký scriptík pro přesměrování na player.php
  <?php
  }
  else
  {
  ?>
  --- nějaký scriptík pro přesměrování na login.php
  <?php
  }

 

a pokud to chceš pouuze na gmlevel3, tak v login.php uprav

if ($row['gmlevel'] < 3) // pokud uživatel není gm, vyplníme sessions takto. Jména proměnných a data do nich ukládaná si nastav jak chceš
              {
              $_SESSION["valid_id"] = $row['id'];
              $_SESSION["valid_user"] = $row['username'];
              $_SESSION["valid_time"] = time();
              echo "Jste přihlášen jako registrovaný uživatel <br>";
              }
            else if ($row['gmlevel'] >= 3) // uživatel má gm práva (nebo vip), nastavíme tyto sessions. Bude potřeba snížit level error_reportingu, jinak to bude později vyhazovat chybky když budeš kontrolovat jaké sessions jsou nastaveny
              {
              $_SESSION["valid_id"] = $row['id'];
              $_SESSION["valid_admin"] = $row['username'];
              $_SESSION["valid_time"] = time();
              echo "Jste přihlášen jako administrátor <br>";
              }

(místo jedniček trojky)

 

...vždy´t je to z toho snad jasné, ne? ;)

Share this post


Link to post
Share on other sites

axxo .. nastala chybka .. stále mi to píše , že account nexistuje , i když existuje ... a hází to chybu na těhle řádcích :

 

$row = mysql_fetch_array($sql); // podle zadaných údajů vybereme účet
              
              if(mysql_num_rows($sql)==0) //pokud to nic nenajde, účet neexistuje, končíme
                 {
                   die("Account nenalezen");
                 }

Edited by Mousik

Share this post


Link to post
Share on other sites

radši napiš jakou chybu. Nejspíš špatný formát dotazu? Postni to sem ;)

 

co mě napadá, jestli nemáš účty bez UPPER? Měla jsem pocit, že upper mít mají, ale můžeš zkusit z dotazu odebrat

 

UPPER('$_REQUEST[login]'

 

tzn

 

$sql = mysql_query("SELECT * FROM account  WHERE username = '$_REQUEST[login]' AND sha_pass_hash = SHA1(CONCAT(UPPER('$_REQUEST[login]'),':',UPPER('$_REQUEST[pass]'))) LIMIT 1");

Edited by axxxa

Share this post


Link to post
Share on other sites
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\login.php on line 24

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\login.php on line 26

Share this post


Link to post
Share on other sites

Jen tak mezi námi, mohla bych vidět, co máš v configu? (db.php, nebo jak jsi ho pojmenoval - samozřejmě je pak nutné updatovat kód)

 

edit: Jde o to, že musíš být připojen do realmd db ;)

Edited by axxxa

Share this post


Link to post
Share on other sites
<?php
$hostname = "127.0.0.1";
$database = "realmd";
$username = "root";
$password = "moje_heslo";

$title = "XXX";

$modulatemedia = mysql_connect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR); 
?>

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  

×