Heslo

Vývojová prostředí, aplikace, skripty, http://www... síťové programy, internet, sdílení...
Teuzz
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 25. zář 2004
Bydliště: Liberec, Praha
Kontaktovat uživatele:

Příspěvek od Teuzz »

Lamicz píše:...
To měla být definice Session?
Časem se mu to stejně zvrhne ve více zaheslovaných stránek, takže bych chtěl vidět tvoje rychlé řešení....

BTW.: zpomaluje každý další řádek kódu ;-)
Burn in hell.
matajon
Začátečník
Začátečník
Uživatelský avatar
Registrován: 22. lis 2005
Bydliště: Dobruška
Kontaktovat uživatele:

Příspěvek od matajon »

Teuzz píše:To měla být definice Session?
Časem se mu to stejně zvrhne ve více zaheslovaných stránek, takže bych chtěl vidět tvoje rychlé řešení....
Nevim, jestli sis nevsiml, ale v tom kodu neni ani radek o sessions. Je to uz drive zminovane prihlaseni z databaze.

a tohle -

Kód: Vybrat vše

while($user = mysql_fetch_array($res))
{  
    header("Location: ___ tajna www___ "); 
    exit; 
}
bych ja osobne nahradil timhle -

Kód: Vybrat vše

if (mysql_num_rows($res) > 0)
{
    header("Location: ___ tajna www___ "); 
    exit; 
}
Post powered by Microsoft® Windows Vista™ Business
No trees or animals were killed during sending this message
Dj´ Frodo
Začátečník
Začátečník
Uživatelský avatar
Registrován: 11. kvě 2005
Bydliště: Mnichovo Hradiště
Kontaktovat uživatele:

Příspěvek od Dj´ Frodo »

no ja osobne bych to potreboval pres Session protoze bych to potreboval do RS a hlavne bych pootreboval abych na webu mel formular pro prihlaseni a kdyz se nekdo prihlasi tak aby misto toho mu nabehlo menu podle jeho pozice na ty sami strance
PC: CPU: AMD Sempron64bit 2600+ (1,6Ghz@2Ghz) MB: MSI K8N Neo GPU: Ati Radeon 9200 128Mb RAM: 256Mb DDR 333Mhz HDD: WD-20Gb, Seagate Baracunda 80Gb OS: Windows XP prof.
Teuzz
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 25. zář 2004
Bydliště: Liberec, Praha
Kontaktovat uživatele:

Příspěvek od Teuzz »

matajon píše:
Teuzz píše:To měla být definice Session?
Časem se mu to stejně zvrhne ve více zaheslovaných stránek, takže bych chtěl vidět tvoje rychlé řešení....
Nevim, jestli sis nevsiml, ale v tom kodu neni ani radek o sessions. Je to uz drive zminovane prihlaseni z databaze.
reagoval jsem na tebe? ne...
Lamicz píše:ezisi, na co SESSIONS? Jako nevim, jestli to vite, ale:
a) zpomaluji
b) na toto je to uplne zbytecny
c) slouzi primarne pro predavani dat mezi jednotlivymi strankami v RS, coz v tomto pripade rozhodne neni.
ve svém kódu jsem session použil. Další dotazy? :roll: :wink:
Burn in hell.
Lamicz
Začátečník
Začátečník
Uživatelský avatar
Registrován: 30. kvě 2005
Bydliště: In a galaxy far away...
Kontaktovat uživatele:

Příspěvek od Lamicz »

Trinom píše:...
No ty upravy uz mas v tom mym CODE - to tvoje by nefungovalo, kdyz bys mel na serveru nastaveni register_globals=Off, coz kvuli bezpecnosti maji skoro vsude. A druha vec, u FORMu je parametr METHOD povinny ;)
2 Matajon: souhlasim, ja jsem totiz pouzil svoji fci z jedne me stranky, kde potrebuju ulozit do session jeste dalsi info z DB, takze proto je tam to fetch_array.
2 Teuzz - zvrhne, nezvrhne, rozhodne ted to nevypada na vice stranek, proto muj nazor na pouziti sessions ;)
2 DjFrodo:

Kód: Vybrat vše

<?
  session_start();
  
  // form
  if($_GET['action'] == login){
    login($_POST['login'], $_POST['password']);
  }

  // login function
  function login($login, $password){
    
    $rows = mysql_num_rows(mysql_query( "SELECT `Id` FROM `users` WHERE (`Login`='$login') AND (`Password`='$password')" ));
    
    if($rows > 0){ 
      $_SESSION['login'] = $login;
    }
    
    $this->gotourl("index.php");
  }

  
  echo "<html>\n";
  echo "<head>\n";
  echo "<title>Title</title>\n";
  echo "</head>\n";
  echo "<body>\n";
  
if(!isset($_SESSION['login'])){
  
    echo "<FORM METHOD="POST" ACTION="".$_SERVER['PHP_SELF']."?action=login">\n";
    echo "<table>\n";
    echo "<tr>\n";
    echo "<td>Login:</td>\n";
    echo "<td><INPUT TYPE="TEXT" NAME="login"></td>\n";
    echo "</tr>\n";
    echo "<tr>\n";
    echo "<td>Heslo:</td>\n";
    echo "<td><INPUT TYPE="PASSWORD" NAME="password"></td>\n";
    echo "</tr>\n";
    echo "<tr>\n";
    echo "<td><INPUT TYPE="SUBMIT" VALUE="Login"></td>\n";
    echo "</tr>\n";
    echo "</table>\n";
    echo "</FORM>\n"; 

}else{

    echo "<H1>Jsi přihlášený jako <b>".$_SESSION['login']."</b></H1>\n";

    echo "<a href="...">tajne menu 1</a>\n";  
    echo "<a href="...">tajne menu 2</a>\n";
}

  echo "</body>\n";
  echo "</html>\n";
      
?>
:: DESKA :: Asus A8V-XE (VIA K8T890) :: CPU :: AMD Athlon 64 3700+ :: VGA :: ATI Asus GF7600 512MB - passive solution :: RAM :: 4x 256MB Samsung :: HDD :: 80GB Maxtor PATA ::
Dj´ Frodo
Začátečník
Začátečník
Uživatelský avatar
Registrován: 11. kvě 2005
Bydliště: Mnichovo Hradiště
Kontaktovat uživatele:

Příspěvek od Dj´ Frodo »

Lamicz píše:...
děkuju hned vyzkousim
PC: CPU: AMD Sempron64bit 2600+ (1,6Ghz@2Ghz) MB: MSI K8N Neo GPU: Ati Radeon 9200 128Mb RAM: 256Mb DDR 333Mhz HDD: WD-20Gb, Seagate Baracunda 80Gb OS: Windows XP prof.
bubanek
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 24. dub 2005
Bydliště: D1

Příspěvek od bubanek »

Trinom píše:
bubanek píše:Hm a co když někdo zadá tu adresu přímo, pak se ho to na heslo ptát nebude. Cookie,Sessions(raději)...?
No, já si myslím, že by mu to mohlo stačit, protože koho zajímaj něčí rodinný fotky. Jinak trošku jiný skript, kterej používám já...

Kód: Vybrat vše

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<title>Titulek</title>
<link rel="stylesheet" type="text/css" href="../foto.css">
</head>
<h2>Zaheslovaná galerie</h2>
<?
 if($heslo != "heslo"): ?>
    <!--přihlašovací formulář -->
    <form action="anygal.php">
        Zadej heslo: <input type=password name="heslo">
        <input type=submit>
    </form>
<? ; else: ?>

<body>
 
Nějaký fotečky

<? endif ?>
</body>

</html>
Ten už zní rozumě, nějaká přímá adresa vetřelci nepomůže :up:
Lamicz
Začátečník
Začátečník
Uživatelský avatar
Registrován: 30. kvě 2005
Bydliště: In a galaxy far away...
Kontaktovat uživatele:

Příspěvek od Lamicz »

DjFrodo:
Oops, kopiroval jsem to z mych objektu a zustal tam jeden "pozutatek" - misto

Kód: Vybrat vše

$this->gotourl("index.php");
prepis na

Kód: Vybrat vše

header("Location: index.php");
[/code]
:: DESKA :: Asus A8V-XE (VIA K8T890) :: CPU :: AMD Athlon 64 3700+ :: VGA :: ATI Asus GF7600 512MB - passive solution :: RAM :: 4x 256MB Samsung :: HDD :: 80GB Maxtor PATA ::
Dj´ Frodo
Začátečník
Začátečník
Uživatelský avatar
Registrován: 11. kvě 2005
Bydliště: Mnichovo Hradiště
Kontaktovat uživatele:

Příspěvek od Dj´ Frodo »

Lamicz píše:DjFrodo:
Oops, kopiroval jsem to z mych objektu a zustal tam jeden "pozutatek" - misto

Kód: Vybrat vše

$this->gotourl("index.php");
prepis na

Kód: Vybrat vše

header("Location: index.php");
[/code]
ok!! jetse sem to nezkousel ale az bude cas tak urcite a diky :-)
PC: CPU: AMD Sempron64bit 2600+ (1,6Ghz@2Ghz) MB: MSI K8N Neo GPU: Ati Radeon 9200 128Mb RAM: 256Mb DDR 333Mhz HDD: WD-20Gb, Seagate Baracunda 80Gb OS: Windows XP prof.
k23
Začátečník
Začátečník
Registrován: 10. lis 2003
Bydliště: PHA

Příspěvek od k23 »

PCMark píše:
sheriff.wiggum píše:co autorizace pres htaccess?
to je mnohem bezpečnější

jinak návod na různé druhy zaheslovávání je zde:
http://www.jakpsatweb.cz/heslo.html#moznosti
jasně, to je mnohem bezpečnější, když přenášíš po tom webu hesla v nešifrovaný podobě LOL
k23
Začátečník
Začátečník
Registrován: 10. lis 2003
Bydliště: PHA

Příspěvek od k23 »

Lamicz píše:Jezisi, na co SESSIONS? Jako nevim, jestli to vite, ale:
a) zpomaluji
b) na toto je to uplne zbytecny
c) slouzi primarne pro predavani dat mezi jednotlivymi strankami v RS, coz v tomto pripade rozhodne neni.
ad a) na to jsi přišel jak?
ad b) na toto jsou jako dělaný
ad c) aha, takže udržení informace o tom, zda je uživatel přihlášen je dle tebe lepší řešit tak, že se budeš neustále dotazovat DB jestli tam takový uživatel je? Nepřijde ti lepší udržet si to v poli?
Lamicz
Začátečník
Začátečník
Uživatelský avatar
Registrován: 30. kvě 2005
Bydliště: In a galaxy far away...
Kontaktovat uživatele:

Příspěvek od Lamicz »

a) z praxe - http://sentinels.profitux.cz/index.php - pouziti sessions pouze pro prihlasene uzivatele znamenal tak 2x narust vykonu ve spicce ;)
b) ne, na toto to OPRAVDU neni delany, k cemu potrebujes informace o konkretnim uzivateli, protoze na to jsou sessions?
c) Ale to ja jsem prece vubec nenapsal - napsal jsem, ze pro TENTO pripad je jejich pouziti zbytecny, jestli bys se dobre podival na muj priklad pro DJFroda, tak bys zjistil, ze tam samorejme sessions jsou, protoze napsal, ze potrebuje vyuzivat prihlaseni pro vice stranek vcetne menu. Ale proc pro kazdeho navstevnika www stranek startovat session, kdyz treba ani nebude chtit jit na tu URL? Mimochodem ten dotaz je od zacatku blbost, protoze vzdycky prece kdyz napisu tu tajnou URL do browseru, tak se tam dostanu. Mnohem lepsi by bylo resit zabezpeceni primo na danem serveru.
:: DESKA :: Asus A8V-XE (VIA K8T890) :: CPU :: AMD Athlon 64 3700+ :: VGA :: ATI Asus GF7600 512MB - passive solution :: RAM :: 4x 256MB Samsung :: HDD :: 80GB Maxtor PATA ::
k23
Začátečník
Začátečník
Registrován: 10. lis 2003
Bydliště: PHA

Příspěvek od k23 »

Lamicz píše:...
Chápu tvojí reakci, máš pravdu v tom, že zde by bylo možná fakt jednodušší udělat HTTP AUTH resp. víc na místě, ale pořád mi nejde do hlavy ta zátěž při použití SESSIONS, můžeš to nějak rozvést?

Btw. SESSIONS nejsou udělaný pouze pro nějaké konkrétní případy, je to prostě proměnná jako každá jiná a když já zrovna chci mít víc info o uživateli, tak ho tam přeci budu mít žejo :) To že se to zrovna náhodou používá na RS přeci není definiční pravidlo ;-)
Lamicz
Začátečník
Začátečník
Uživatelský avatar
Registrován: 30. kvě 2005
Bydliště: In a galaxy far away...
Kontaktovat uživatele:

Příspěvek od Lamicz »

No, muzu to klidne rozvest - session informace se uklada na serveru do nejake slozky (urcene v php.ini), coz samo o sobe si pri zatizenem serveru nejaky cas vezme (kolik je tam navstevniku, tolik je souboru - maji zpravidla nazev sess~md5hash jako vidis v browseru). No, ted z toho souboru se pri kazde seesion_start fci cte, coz taky zabira trochu casu atd... Sessions samy o sobe jsou relativne bezpecna metoda k uchovavani informaci (vyhoda napr. oproti $_GET je jasna, avsak tam, kde to je mozne a vyhodne, bych pouzival treba HIDDEN typ INPUTu nebo pro necitlive informace $_GET. Je to vice rezie ze strany programatora (musi jak magor vsude psat jeste ty promenny), ale ma to sve misto. Posledni nevyhoda sessions jsou na strane klienta cookies, coz a) hrozi, ze uzivatel bude mit akazane, coz znamena riziko neprovedeni dane akce, kde se sessions pouzivaji a b) cookies jdou zmenit, tzn. riziko modifikovani informaci a "prolamani" se tam, kam dany uzivatel by nemel mit pristup. Na strane druhe jsou sessions vyborne na soukromou sekci v RS, jesnou jsem videl soukromou sekci, kde heslo bez MD5 bylo soucasti URL, cili $_GET. To samozrejme nee, tady maji misto sessions. Take se jimi da velmi snadno definovat napr. stupen opraveni mezi uzivateli (bud, ze mam druhou session nebo te jedne session pridelim jinou hodnotu, coz je nebezpecne, viz modifikace cookie --> zmena prav).
Ukladani sessions se da osetrit taktez v php.ini, IMHO tam jde i nastavit, aby pri odmitnuti cookie se tato promenna objevila v URL, typicke - PHPSESSID=abcdef (maji to tak udelane myslim na WZ), coz ovsem nejsou CoolURL nebo-li SEO optimalizace, vznikaji tzv. duplicitni URL, ktere vedou na to stejne misto, ale napr. google bot bud zaindexuje tisic stejnych URL, ktere se lisi prave tim PHPSESSID --> bordel, nebo, coz je horsi, ani jednu --> mala navstevnost.
Uff, nejak jsem se rozepsal... :oops:
:: DESKA :: Asus A8V-XE (VIA K8T890) :: CPU :: AMD Athlon 64 3700+ :: VGA :: ATI Asus GF7600 512MB - passive solution :: RAM :: 4x 256MB Samsung :: HDD :: 80GB Maxtor PATA ::
k23
Začátečník
Začátečník
Registrován: 10. lis 2003
Bydliště: PHA

Příspěvek od k23 »

Lamicz píše:...
Ale já chápu jak fungují SESSIONS, nemusíš se namáhat ;) Takže tvrdíš, že IO operace brzdí odezvu serveru, ok, ovšem, v tom případě mi přijde, že bych SESSIONS spíše neměl používat :lol:

Btw. databáze je taky pár souborů. Pokud je aplikace na solidním hostingu s linuxem, nemí imho skoro důvod se nervovat, že to bude pomalé. Důležitější jsou podle mě optimalizace SQL dotazů, tj. používat JOINování místo vícenásobných selectů atd atd.

Co třeba takový e-shop, například http://www.digital-cameras.com/, tam je v SESSION tolik informací :)
Dj´ Frodo
Začátečník
Začátečník
Uživatelský avatar
Registrován: 11. kvě 2005
Bydliště: Mnichovo Hradiště
Kontaktovat uživatele:

Příspěvek od Dj´ Frodo »

Lamicz píše:

Kód: Vybrat vše

<?
  session_start();
  
  // form
  if($_GET['action'] == login){
    login($_POST['login'], $_POST['password']);
  }

  // login function
  function login($login, $password){
    
    $rows = mysql_num_rows(mysql_query( "SELECT `Id` FROM `users` WHERE (`Login`='$login') AND (`Password`='$password')" ));
    
    if($rows > 0){ 
      $_SESSION['login'] = $login;
    }
    
    $this->gotourl("index.php");
  }

  
  echo "<html>\n";
  echo "<head>\n";
  echo "<title>Title</title>\n";
  echo "</head>\n";
  echo "<body>\n";
  
if(!isset($_SESSION['login'])){
  
    echo "<FORM METHOD="POST" ACTION="".$_SERVER['PHP_SELF']."?action=login">\n";
    echo "<table>\n";
    echo "<tr>\n";
    echo "<td>Login:</td>\n";
    echo "<td><INPUT TYPE="TEXT" NAME="login"></td>\n";
    echo "</tr>\n";
    echo "<tr>\n";
    echo "<td>Heslo:</td>\n";
    echo "<td><INPUT TYPE="PASSWORD" NAME="password"></td>\n";
    echo "</tr>\n";
    echo "<tr>\n";
    echo "<td><INPUT TYPE="SUBMIT" VALUE="Login"></td>\n";
    echo "</tr>\n";
    echo "</table>\n";
    echo "</FORM>\n"; 

}else{

    echo "<H1>Jsi přihlášený jako <b>".$_SESSION['login']."</b></H1>\n";

    echo "<a href="...">tajne menu 1</a>\n";  
    echo "<a href="...">tajne menu 2</a>\n";
}

  echo "</body>\n";
  echo "</html>\n";
      
?>
prosimte jak jeste udelam odhlaseni aby se mi session smazali???
edit: jinak to funguje bezvadne
edit2: prosimte jeste bych k tomu potreboval aby se mi do session ukladali dalsi dve data z databaze (prava,email) a i to id co tam testujes, takze v podstate tri. Protoze s id budu potrebovat dale pracovat. nejak na to nemuzu prijit!!
PC: CPU: AMD Sempron64bit 2600+ (1,6Ghz@2Ghz) MB: MSI K8N Neo GPU: Ati Radeon 9200 128Mb RAM: 256Mb DDR 333Mhz HDD: WD-20Gb, Seagate Baracunda 80Gb OS: Windows XP prof.
Teuzz
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 25. zář 2004
Bydliště: Liberec, Praha
Kontaktovat uživatele:

Příspěvek od Teuzz »

Dj´ Frodo píše: prosimte jak jeste udelam odhlaseni aby se mi session smazali???
edit: jinak to funguje bezvadne
edit2: prosimte jeste bych k tomu potreboval aby se mi do session ukladali dalsi dve data z databaze (prava,email) a i to id co tam testujes, takze v podstate tri. Protoze s id budu potrebovat dale pracovat. nejak na to nemuzu prijit!!

Kód: Vybrat vše

<?php
session_unset();
?php>
vybereš si data z db do arraye, čli:

Kód: Vybrat vše

$rows = mysql_num_rows(mysql_query( "SELECT `Id` FROM `users` WHERE (`Login`='$login') AND (`Password`='$password')" ));
přepsat na

Kód: Vybrat vše

$query = mysql_query( "SELECT `Id`,`prava`,`email` FROM `users` WHERE (`Login`='$login') AND (`Password`='$password')");
$rows = mysql_fetch_array($query);
a dale

Kód: Vybrat vše

if($rows > 0){ 
$_SESSION['login'] = $login; 
}
na

Kód: Vybrat vše

if(mysql_num_rows($query) > 0){ 
$_SESSION['login'] = $login; 
$_SESSION['prava'] = $rows['prava'];
$_SESSION['email'] = $rows['email'];
}
ID v session neměň, kdyžtak si ho načti do proměnné a měň proměnnou nikoli ID. BTW. ID je od toho, aby se neměnilo...

Kód: Vybrat vše

$promenna_id = $_SESSION['ID']*3521;
nikoli

Kód: Vybrat vše

$_SESSION['ID'] = $_SESSION['ID']*3521;
Burn in hell.
Dj´ Frodo
Začátečník
Začátečník
Uživatelský avatar
Registrován: 11. kvě 2005
Bydliště: Mnichovo Hradiště
Kontaktovat uživatele:

Příspěvek od Dj´ Frodo »

Teuzz píše:ID v session neměň, kdyžtak si ho načti do proměnné a měň proměnnou nikoli ID. BTW. ID je od toho, aby se neměnilo...

Kód: Vybrat vše

$promenna_id = $_SESSION['ID']*3521;
nikoli

Kód: Vybrat vše

$_SESSION['ID'] = $_SESSION['ID']*3521;
ja tam id potrebuju v session kvuli tomu abych pak pri nejaky akci jako zmena udaju moh vypsat info podle id a to nasobeni sem tam jako nepochopil to je jako kvuli tomu abych si ho nejakym zpusobem zasifroval?
PC: CPU: AMD Sempron64bit 2600+ (1,6Ghz@2Ghz) MB: MSI K8N Neo GPU: Ati Radeon 9200 128Mb RAM: 256Mb DDR 333Mhz HDD: WD-20Gb, Seagate Baracunda 80Gb OS: Windows XP prof.
Teuzz
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 25. zář 2004
Bydliště: Liberec, Praha
Kontaktovat uživatele:

Příspěvek od Teuzz »

Dj´ Frodo píše:
Teuzz píše:ID v session neměň, kdyžtak si ho načti do proměnné a měň proměnnou nikoli ID. BTW. ID je od toho, aby se neměnilo...

Kód: Vybrat vše

$promenna_id = $_SESSION['ID']*3521;
nikoli

Kód: Vybrat vše

$_SESSION['ID'] = $_SESSION['ID']*3521;
ja tam id potrebuju v session kvuli tomu abych pak pri nejaky akci jako zmena udaju moh vypsat info podle id a to nasobeni sem tam jako nepochopil to je jako kvuli tomu abych si ho nejakym zpusobem zasifroval?
Aha, už jsem pochopil tu větu, kterou máš červeně v tom předchozim postu... :roll: :wink:

Kód: Vybrat vše

if(mysql_num_rows($query) > 0){ 
$_SESSION['login'] = $login; 
$_SESSION['prava'] = $rows['prava']; 
$_SESSION['email'] = $rows['email']; 
$_SESSION['Id'] = $rows['Id']; 
}
Burn in hell.
Dj´ Frodo
Začátečník
Začátečník
Uživatelský avatar
Registrován: 11. kvě 2005
Bydliště: Mnichovo Hradiště
Kontaktovat uživatele:

Příspěvek od Dj´ Frodo »

Teuzz píše: Aha, už jsem pochopil tu větu, kterou máš červeně v tom předchozim postu... :roll: :wink:

Kód: Vybrat vše

if(mysql_num_rows($query) > 0){ 
$_SESSION['login'] = $login; 
$_SESSION['prava'] = $rows['prava']; 
$_SESSION['email'] = $rows['email']; 
$_SESSION['Id'] = $rows['Id']; 
}
jj ja uz sem si to udelal, ale prezto dekuju!!!
PC: CPU: AMD Sempron64bit 2600+ (1,6Ghz@2Ghz) MB: MSI K8N Neo GPU: Ati Radeon 9200 128Mb RAM: 256Mb DDR 333Mhz HDD: WD-20Gb, Seagate Baracunda 80Gb OS: Windows XP prof.
Odpovědět

Zpět na „Programování a web“