Autor Zpráva
tik124
Profil *
mam skript ktorí prihlasuje uživaťelov cez session a ja chcem aby si uživaťel cez nejaký formulár dokázal zmeniť heslo a heslo môže byt kodovane v md5 a nick. Stránka log-in.php služi na overenie údajov tak v podstate tam sa to niekde bude menit. Srdečne Vás prosím aby ste mi upravili/nakodovali ten skript


log-in.php

<?php
session_start();
$_SESSION['user'] = $_POST['nick'];
$_SESSION['pass'] = $_POST['pass'];
$_SESSION['id'] = $_POST['id'];
$_SESSION['authuser'] = 0;
if( $_SESSION['user'] == "nick" and $_SESSION['pass'] == "heslo12345" and $_SESSION['id'] == "001") {
  $_SESSION['authuser'] = 1;
}else if( $_SESSION['user'] == "nick02" and $_SESSION['pass'] == "asdfheslo12345" and $_SESSION['id'] == "002") {
  $_SESSION['authuser'] = 1;
}
else{   
  echo '<meta http-equiv="refresh" content="0;url=chyba1.php">';
  exit();
} 
?> 
Jostram
Profil *
Jestli chcete měnit hesla uživatelům, tak je musíte mít uložená separátně, ne natvrdo v kódu. Jsou v podstatě dvě možnosti:
1. Použít databázi - třeba MySQL - a provádět příkaz UPDATE
2. Použít soubor, kde budou data třeba ve formátu:
login:MD5pass
login2:MD5pass2

Tady už je téměř nutnost mít data v MD5/SHA, protože ten soubor by se mohl dostat útočníkovi do rukou.

• Jinak se zeptám - proč cpete všechny data z formuláře do $_SESSION? Obzvlášť to heslo skutečně nechápu…
• Místo vypisování META refresh je lepší použít funkci header()

toto téma by mělo patřit do kategorie PHP

Moderátor panther: Přesunuto.
tik124
Profil *
aby si moji užívatelia dokázali zmeniť sa mi heslo beze mna lebo v podstate log-in.php môžem upraviť iba ja a potom uživaťel mi musi mailom poslať heslo
nepoužívam databázu (riešim bez databazi)
heslo je iba ukážkové
no pravdu más možno to patrí do kategorie php ale myslel som že Jak něco udělat?
Jostram
Profil *
tik124:
Ano, to, že to můžete udělat jen vy chápu. Chápu i to, že to chcete změnit. Jak jsem psal - máte dvě možnosti:
1. Databázi (tu ale nechcete)
2. Externí soubor se jmény a hesly, který pak budete parserovat. Vás se bude týkat nejspíš toto. Udělejte si soubor, ve kterém budou jména a hesla třeba v následujícím formátu:
login1:md5_heslo1
login2:md5_heslo2

A pak prostě vyhledejte příslušný řádek (můžete načítat soubor s hesly řádek po řádku a zkoušet, zda obsahuje zadaný login) a porovnejte hodnoty. Pokud byste chtěl spravovat víc jak 20 uživatelů, udělejte to ale přes DB.


To o umístění do kategorie PHP byla poznámka pod čarou pro moderátora (Díky, panthere.).
tik124
Profil *
prepač ale v php som začiatočník ako to spravim môžes mi napisať nejaký príkad ? dakujem
Jostram
Profil *
Ukážu vám správný směr a pomohu vám s případnými problémy, ale dělat to za vás nebudu.

V podstatě potřebujete udělat několik kroků (při přihlašování pomocí této metody):
• Pomocí fce file() načíst soubor po rádcích
• Pomocí cyklu foreach projít načtený soubor - jako třeba zde
• V tom cyklu použít funkci explode(), která se postará o rozdělení řádku na část s loginem a část s heslem
• Pokud je zadaný login stejný, tak překontrolovat heslo

Změna hesla pak bude podobná s tím rozdílem, že si ty řádky, které procházíte v cyklu, dáte do nějaké proměnné, kterou pak třeba pomocí funkce fwrite() zapíšete do souboru s hesly.

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:

0