Autor Zpráva
oboda7
Profil
Ahoj, potřebuji rychle pomoc s touto věcí, php mám prvním rokem a moc to neovládám....máme za úkol udělat přihlašovací stránku, kde se bude moct změnit i heslo:

Formulář indexx.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<meta name="generator" content="PSPad editor, www.pspad.com">
<title>Rozhodovací formulář</title>
</head>
<body>
<h1>Vítejte na stránkách PHP</h1>
<form method="post" action="php.php">
Uživatelské jméno / Login &nbsp;<input type="text" name="jmeno"><br>
Heslo / Password &nbsp;<input type="password" name="heslo"><br>
<input type="submit" value="odeslat">
</form>
<form action="password.php" method="post">
Jméno uživatele<br>
<input type="text" name="id"/><br>
Staré heslo
<br><input type="text" name="stare"/></font><br>
Nové heslo<br>
<input type="text" name="nove"/></font><br>
Potvrzení hesla<br>
<input type="text" name="potvrdit"/></font><br>
<input type="submit" value="Změnit heslo"/></font></b>
</form>
  </body>
</html>

php kod php.php
<?php
$jmeno=$_POST ['jmeno'];
$heslo=$_POST ['heslo'];
if ($heslo=="abc"){
echo 'Děkujeme, pokračujte kliknutím <a href="obsah_cz.php">sem</a>.';}
else{
echo 'Je nám líto, zadali jste špatné heslo, skuste to <a href="indexx.html">znovu</a>.';}

?>

uživatelské jméno je libovolné to si tam člověk může napsat co chce, jde mi hlavně o heslo. Potřeboval bych to tak, že když se do formuláře dole napíše staré heslo a nové, tak aby se to původná heslo (abc), přepsalo na to nové a při dalším přihlášení fungovalo to nové....nevím přesně jak to funguje, vím, že může být zápis do ddatabáze atd. ale také do souboru, nevím jeslti přímo do toho php nebo se vytvoří jiné. Dělejte, jak myslíte :) děkuji
Someone
Profil
Do souboru: file_get_contents a file_put_contents, pomocí databáze: příkazy SELECT a UPDATE. Nikdo ti tu nebude předělávat celý kód od toho jsou Práce a Zakázky
edit: měl jsem tam file_fut_contents
martin1312
Profil
file_put_contents
Someone
Profil
martin1312:
Jojo, přepsal jsem se.. Děkuju
Eanex-Michal
Profil
Moderátor Davex: Přesunuto z duplicitního tématu Pomoc vytvořit php kód pro změnu hesla (zapsaní do souboru).

oboda7: Ahoj. Nejednodušší bude, když se heslo bude ukládat šifrované do txt souboru (heslo.txt). Stačí použít MD5 (předpokládám, že se jedná o výukovou práci), aby heslo bylo "v bezpečí". Takže tedy vytvoř soubor heslo.txt a:
$soubor = fopen("heslo.txt", "r");
$text = fread($soubor, 10);

ověření hesla:
if(md5($_POST['heslo'])==md5($text))
{správné heslo}
else
{špatné heslo}
fclose($soubor);

změna hesla:
if(md5($_POST['stare_heslo'])==md5($text))
{
//hesla se schodují
$text = "$_POST["nove_heslo"]";
$soubor = fopen("heslo.txt", "a+");
fwrite($soubor, $text);
fclose($soubor);
}
else
{
//hesla se neschodují 
fclose($soubor);}

Samozřejmě pokud to bude někde na webu tak proměnné ošetři, kontroluj, zda soubor existuje a použij lepší šifrování (třeba sha1).
Davex
Profil
Someone:
Nikdo ti tu nebude předělávat celý kód od toho jsou Práce a Zakázky
Nevyháněj prosím lidi do kategorie Práce a zakázky, protože tam obvykle jen založí duplicitní téma, že chtějí poradit zdarma a tím se nic neřeší.
oboda7
Profil
Eanex-Michal:
Moc děkuji za zájem, ale pořád to nějak nechápu....omlouvám se, jsem opravdu noob co se týče tohodle, učitel s náma probral základy formuláře a to je všechno a teĎ po nás chce todle, Mohli by jsi to laicky napsat co a jak mám udělat. Přesný postup jaký soubor vytvořit co do něj přibližnšě dát a tak :) šifrování hesla ani nebusí být stačí aby se v php (nebo textovém souboru) původný heslo "abc" neměnilo na jiné. Nemusí to být tak složité, jen prostě aby to fungovalo. Pokud jsem správně pochopil, vytvořím prázdný txt soubor heslo.txt a ten kód co si my poslal mám dát do toho nebo do nového php, nebo přidat jinam? Děkuji, že se mnou máte trpělivost
Kubo2
Profil
Kdybych teď byl na počítači aj ti poradím....ale píšem z mobilu tak len napíšem postup:
(1) Spoj sa s databázou, to hádam vieš,
(2) deklaruj premenné z form., takhle:
$nick = $_POST['meno'];
$stareh = $_POST['stare'];
$noveh = $_POST['nove'];
(3) skopiruj overovaci kod z prihlasenia a over či sa stare heslo zhoduje,
(4) ak sa zhoduje prikaž vykonať túto funkciu:
{
mysql_query("UPDATE TABLE uzivatelia SET heslo='$noveh' WHERE meno='$nick'"); // fuha, neviem ci mam ten SQL príkaz celkom validně
echo $uspech;
} // inak napíš o neuspechu
else
{
die('Niečo sa pokazilo.');
};

Úha musím frčať prihára mi višňový lekvár ...
1Pupik1989
Profil
klidně bych to jednodušše udělal takto:

mysql_query("UPDATE TABLE uzivatelia SET heslo='$noveh' WHERE meno='$nick'" AND heslo='".$stareh."');
Kubo2
Profil
Počuj,1Pupik1989, nenpsal si tam trochu zle tie uvodzovky za tým AND ?
A proč jsou okolo premený ty dvě tečky?
Inak celkom Tvoj postup uznávam, lebo sa heslo nemusí overovať dosť dlhým samostatným príkazom .

Ahoj oboda7, napíš, jak s tou zmenou hesla, či si sa nejak vynašiel, alebo ak ešte niečo potrebuješ, napíš. Inak dufam že tie kody pomohli, a ja s 1Pupikom1989 sme nepisali zbytočně .
oboda7
Profil
Kubo2:
Bohužel, ani s databázi neumim spojit....právě proto říkám, jestli to jńejde nějak jednodušeji (prostě normální php příkaz co přepíše php nebo textový soubor)....
Alphard
Profil
oboda7:
Bylo to hned v úvodu – file_get_contents() a file_put_contents(). Následujte odkazy do manuálu, jsou tam ukázky použití.
oboda7
Profil
sákryš, pořád nechápu.....prosím o lidi co by mi byli ochotni osobně pomoc, ať mi dají na sebe kontakt (e-mail, skype, facebook, nebo jiné)..... nebo spíše vám dám kontakt na mě:
skype: oboda7
facebook: michal bounla
email: oboda7@seznam.cz
děkuji
Amunak
Profil
oboda7:
Možná bys měl o hodinách víc dávat pozor nebo se radši vůbec nevěnovat programování, když ani s manuálem a několika ukázkami nedáš dohromady něco jako tohle:

<?PHP
define('pwdf', 'pass.sha1'); //soubor s heslem

if(isset($_POST['heslo']) && sha1($_POST['heslo']) == file_get_contents(pwdf))
{
  if(isset($_POST['noveheslo']))
  {
    file_put_contents(pwdf, sha1($_POST['noveheslo']));
    echo 'Heslo změněno.'.PHP_EOL;
  }

  echo 'Zabezpečený obsah a formulář action=? method=post se dvěma poli s name heslo a noveheslo';
  
} else {
  if(isset($_POST['heslo']))
    echo 'Heslo je chybné.'.PHP_EOL;
  echo 'Nezabezpečený obsah a login formulář action=? method=post s polem s name=heslo';
}

Upozorňuji že je to jen kostra bez jakéhokoliv ověřování chyb (existence souboru, délka hesla, ...). Na začátku budeš muset soubor s heslem ručně vytvořit a do něj vepsat hash nějakého hesla.
Kubo2
Profil
oboda7, mám pro tebe něco :

---> Tady se naučíš základy - http://jakpsatweb.cz/php/moznosti-php.html
---> Tady pokročilejší spolupráci s databázemi - http://blog.tociman.net/php-mysql/

Přečti si to celé . Tak jsem se učil i já a celkem dobře mi to už jde ---
oboda7
Profil
Amunak:
dobře, takže pokud chápu správně, udělám soubor(txt,php,....?) s názvem "pwdf" a do něj dám heslo "pass.sha1"(pokud dobře chápu, tak "pass.sha1" znamená heslo vygenerované v sha1)?
Kubo2
Profil
oboda7:
...bohužel, ani s databází neumím spojit...

To se dělá takto:
<?php
/* Spojíš sa so serverom, kde máš databázu */
mysql_connect("mysql.server.cz","prihlasovacie_meno","heslo");
/* Vyberieš tvoju DB */
Mysql_select_db(tvoja_databáza); // do tých zátvoriej hoď meno tvojej db bez úvodzoviek
// Celé to daj (aspoň ja to tak robím) úplne na začiatok skriptu

{ ... ďaľší PHP program ... };

?>
Someone
Profil
Kubo2:
db bez úvodzoviek
Opravdu?
oboda7
Profil
Kubo2:
a kdy to dělám přes local? co mám napsat dále? používám xammp
mám to napsat nějak takhle?
[pre][mysql_connect("localhost","zde něvím jaké je přihlašovací jného", "a heslo");

Mysql_select_db(nevím kde mám vzít databázi nebo jestli tam je tak jak se jmenuje nebo kde bych jí měl najít)/pre]


jinak pro všechny, hned na začátku jsem se ptal jestlo to nejde nějak jednodušeji jako mi například poradil Eanex-Michal, prostě zápis do textového souboru, žádná databáze.
Someone
Profil
Tak si o tom něco přečti.
Davex
Profil
oboda7:
dobře, takže pokud chápu správně, udělám soubor(txt,php,....?) s názvem "pwdf" a do něj dám heslo "pass.sha1"(pokud dobře chápu, tak "pass.sha1" znamená heslo vygenerované v sha1)?
Chápeš to špatně. Pokud ti mohu doporučit, tak si projdi Amunakův kód řádek po řádku, nad každým se zastav a pokus se odpovědět na otázku „co přesně tento řádek a jednotlivé části v něm dělají?“ Dohledej si co dělají jednotlivé příkazy, jak fungují podmínky, pole, funkce... Dokud se nepokusíš pochopit naprosté základy, tak se nehneš dál.
oboda7
Profil
dobře, budu se snažit to pročítat. prosím ještě mi teda cysvětlete jak mám udělat ten soubor s heslem. prosím, jak se má jmenovat, jaký formát jaký obsah, děkuji
Someone
Profil
oboda7:
Může to být klidně i textový soubor, který bude obsahovat hash hesla.
oboda7
Profil
konečně jsem to pochopil a už to funguje děkuju :) teď jenom vymyslet aby to fungovali i s přihlašováním.....děkuji všem za trpělivost...pokud by někdo chtěl tak mi klidně mže i trochu popsat jak to spojit s dokumentem nahoře (s přihlašováním)
Kubo2
Profil
a kdes vzal localhosta? Vravel si ze sa nevies spojit s databazou.

V localhostovi asi není databáze, musíš si ji vytvořit. Ale zeptej se učitela . O tej databazi je vše potřebné rozpísané na Yuhůova stránkách ( jakpsatweb.cz ) v sekci Ostatní.
Amunak
Profil
Kubo2:
Myslím že by bylo vhodné netrápit obodu7 databázemi, když má problém s pochopením základních příkazů. Poslal jsi mu sice pár SQL příkazů, ale vzhledem k tomu, že nejspíš nemá ani založenou databázi (natož tabulku s uživateli a hesly), nepřijde mi to jako zrovna ideální řešení.
oboda7
Profil
už jsem to vyřešil, funguje to celé! děkuji všem za trpělivost..... :)
Toto téma je uzamčeno. Odpověď nelze zaslat.