 |
|
Stránka 1 z 1
|
[ Príspevkov: 15 ] |
|
Registrace, Přihlášení za pomocí MySQL
| Autor |
Správa |
|
Light Expert
Registrovaný: 24.8.2010 Príspevky: 48
Karma:
|
 Registrace, Přihlášení za pomocí MySQL
Zdravím, Tohle není moje práce ale když to jdu použít tak to trochu předělám třeba zápis do SQL a funguje podle mých představ. Jelikož slyším různě na internetu po různých fórech že hledají Registrace a Přihlašovací stránky k tomu tak to aspoň sem dám a odlákám tak pár spamerů. Možná že nějací zde budou. Registrace [registrace.php]: Kód: <?php echo '<h1>Registrace</h1>';
$submit = $_POST['submit'];
// Data tabulky $nick = strtolower(strip_tags($_POST['nick'])); $skype = strip_tags($_POST['skype']); $icq = strip_tags($_POST['icq']); $mail = strip_tags($_POST['mail']); $date = date("Y-m-d"); //Strip tag který zakazuje tagy $uznick = strip_tags($_POST['uznick']); // md5 která zasifruje heslo $passone = md5($_POST['passone']); //$passone = md5(strip_tags($_POST['passone'])); //$nick = striplower($_POST['skype']);
$passone = $_POST['passone']; $passtwo = $_POST['passtwo'];
if ($submit) { //echo "$nick, $skype, $icq, $mail"; //echo $nick."<br>".$skype."<br>".$icq."<br>".$mail.
$pripojeni = mysql_connect("127.0.0.1","root","heslo"); mysql_select_db("web");
$nickcheck = mysql_query("SELECT nick FROM uzivatele WHERE nick='$nick'"); $vysl = mysql_num_rows($nickcheck);
if ($vysl!=0) { die("Nick už je používán někým jiným !"); }
if ($nick&&$skype&&$icq&&$mail&&$passone&&$passtwo)// kontrola vyplněných políček {
if ($passone==$passtwo) { if (strlen($nick)>25||strlen($skype)>25||strlen($icq)>25||strlen($mail)>25) { echo "Délka políček je max. 25 !"; } else { if (strlen($passone)>25||strlen($passone)<6) { echo "Heslo musí mít minimalne 6 a macimalne 25 znaku !"; } else { // Sifra hesel $passone = md5($passone);// Sifrovani hesla $passtwo = md5($passtwo);// Sifrovani hesla //registrace uzivatele
$queryregister = mysql_query(" INSERT INTO uzivatele VALUES ('','$nick','$skype','$icq','$mail','$passone','$date')"); die ("Nyní jste byl zaregistrován do systeém. Dekujeme !");
} } } else echo "Nesedí oba hesla !"; } else echo "Vyplňtě <b>všechna</b> políčka !!";
}
?>
<html> <head> <title>Register</title> </head> <body> <form action='registrace.php' method='POST'> <table> <tbody> <tr> <td>Nick</td> <td><input type='text' name='nick' value='<?php echo $nick; ?>'> </tr>
<tr> <td>Skype</td> <td><input type='text' name='skype' value='<?php echo $skype; ?>'> </tr>
<tr> <td>ICQ</td> <td><input type='text' name='icq' value='<?php echo $icq; ?>'> </tr> <tr> <td>E-Mail</td> <td><input type='text' name='mail' value='<?php echo $mail; ?>'> </tr> <tr> <td>Heslo 1</td> <td><input type='password' name='passone'> </tr>
<tr> <td>Heslo 2</td> <td><input type='password' name='passtwo'> </tr> <tr> <td>Reg</td> <td><input type='submit' name='submit' value='Registrovat'> </tr> </tbody> </table> </form> </body> </html> Přihlášení [login.php]: Kód: <?php
session_start();
$nick = $_POST['nick']; $pass = $_POST['pass']; if ($nick&&$pass) { $connect = mysql_connect("127.0.0.1","root","vertrigo") or die("Nepodarilo se pripojit k MySQl"); mysql_select_db("web") or die("Nepodařilo se najít DB"); $line = mysql_query("SELECT * FROM uzivatele WHERE nick='$nick'");
$numrows = mysql_num_rows($line); if ($numrows!=0) { // cod pro prihlaseni while ($row = mysql_fetch_assoc($line)) { $dbname = $row['nick']; $dbpass = $row['pass']; } if ($nick==$dbname&&md5($pass)==$dbpass) { echo "Jsi prihlasen :) <a href='uzivatel.php'> Administrace </a>"; $_SESSION['nick']=$nick; } else echo "Nesprávné heslo !";
} else die("Tento uživatel neexituje !");
} else die ("Zasej Nick a Heslo !"); ?> Uživatelský panel [uzivatel.php]: Kód: <?php
session_start();
if ($_SESSION['nick']) echo "Vítej, ".$_SESSION['nick']."!<br><a href='logout.php'>Odhlaseni</a>"; else die("Musiš se přihlásit ! <a href='index.php'>Prihlasit !</a>"); ?> Odhlášení [logout.php]: Kód: <?php session_start(); session_destroy(); echo "Byl jsi úspěšně odhlášen. <a href='index.php'>Klikni</a> na login ."; ?> Ještě pro začátečníky aby si nelámali hlavu v PHPMyAdmin a nesnažili si udělat špatné tabulky tak jsem já osobně pro vás udělal tyto. Mám je odskoušené a nehrozí že by měli nějakou chybu. Kód: CREATE TABLE `web`.`uzivatele` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `nick` VARCHAR( 25 ) NOT NULL , `skype` VARCHAR( 25 ) NOT NULL , `icq` VARCHAR( 25 ) NOT NULL , `mail` VARCHAR( 25 ) NOT NULL , `pass` VARCHAR( 25 ) NOT NULL , `date` VARCHAR( 25 ) NOT NULL ) ENGINE = MYISAM
|
| 05 Okt 2010, 15:25 |
|
 |
|
Moderátor
Registrovaný: 9.9.2005 Príspevky: 21160 Bydlisko: Prievidza
Karma:
|
 Re: Registrace, Přihlášení za pomocí MySQL
to je riadny mišmaš, načo tam máš toto? Kód: $passone = md5($passone);// Sifrovani hesla $passtwo = md5($passtwo);// Sifrovani hesla
keď predtým je kontrola že hesla sú rovnaké? Stačí $passtwo = $passone = md5($passone); pri prihlásení absolútne žiadna kontrola vstupov, taká sql injection diera, že sa ti prihlásim ako admin behom pár minút Viac sa mi pozerať nechce, ale toto je veľmi zlý kód
|
| 05 Okt 2010, 16:20 |
|
 |
|
Light Expert
Registrovaný: 24.8.2010 Príspevky: 48
Karma:
|
 Re: Registrace, Přihlášení za pomocí MySQL
no... je v tom diera vidím... kontroloval som to teraz je tam diera ale znovu to písať nebudem
|
| 05 Okt 2010, 18:02 |
|
 |
|
Light Expert
Registrovaný: 5.3.2009 Príspevky: 47
Karma:
|
 Re: Registrace, Přihlášení za pomocí MySQL
to je co za hlupost ??? ked dam login.php jedine co tam mam je "Zasej Nick a Heslo !"  to akoze ziadny prihlasovaci formular tam neni ??? zisiel by sa 
|
| 19 Okt 2010, 20:29 |
|
 |
|
Light Expert
Registrovaný: 6.10.2010 Príspevky: 67
Karma:
|
 Re: Registrace, Přihlášení za pomocí MySQL
Tu sa pocita s tym, ze si ten formular dorobis, co by to bolo, keby ti všetko ponukol jak na tacni?! //autoeditácia príspevku (25 Nov 2010, 19:11)Mam jedno vylepsenie... Namiesto toho: Kód: $line = mysql_query("SELECT * FROM uzivatele WHERE nick='$nick'");
$numrows = mysql_num_rows($line); if ($numrows!=0) { // cod pro prihlaseni while ($row = mysql_fetch_assoc($line)) { $dbname = $row['nick']; $dbpass = $row['pass']; } if ($nick==$dbname&&md5($pass)==$dbpass) by som dal Kód: $line = mysql_query("SELECT * FROM uzivatele WHERE nick='$nick AND pass='$pass' ");
$numrows = mysql_num_rows($line); if ($numrows!=0) { // .... zbytok kodu
|
| 25 Nov 2010, 20:07 |
|
 |
|
Moderátor
Registrovaný: 9.9.2005 Príspevky: 21160 Bydlisko: Prievidza
Karma:
|
 Re: Registrace, Přihlášení za pomocí MySQL
trošku ti tam ušli apostrofy v tom query, takže tvoje vylepšie akurát tak hodí parse error
|
| 26 Nov 2010, 2:02 |
|
 |
|
Light Expert
Registrovaný: 6.10.2010 Príspevky: 67
Karma:
|
 Re: Registrace, Přihlášení za pomocí MySQL
ale inac je to dobre?
|
| 26 Nov 2010, 17:07 |
|
 |
|
VIP
Registrovaný: 24.2.2005 Príspevky: 999 Bydlisko: MYsql
Karma:
|
 Re: Registrace, Přihlášení za pomocí MySQL
Tomu while tam nerozumiem - zbytočnosť  . Ináč ako spomínal audio, sql injection ako hrom. Hlavne to treba opraviť.
|
| 27 Nov 2010, 0:08 |
|
 |
|
Light Expert
Registrovaný: 6.10.2010 Príspevky: 67
Karma:
|
 Re: Registrace, Přihlášení za pomocí MySQL
Mám tu jeden problémik.... Súbor login.php: Kód: <?php session_start(); include ('../endora.php'); if(! isset($_SESSION['meno'])) { if (isset($_POST['meno'])) { $meno = $_POST['meno']; $heslo = md5($_POST['heslo']); include('Databasa/db.php'); $query = mysql_query("SELECT meno FROM trhov WHERE meno='$meno' AND heslo=$heslo"); if( mysql_num_rows($query) == 1) { $_SESSION['meno'] = mysql_result($result,0,"meno"); $_SESSION['pr_meno'] = mysql_result($result,0,"pr_meno"); echo "Ahoj";} } else { include ("login.html"); } } else { $name = $_SESSION['meno']; echo "Vitajte $meno. Ak sa chcete odhlásiť kliknite <a href='logout.php' title='odhlásiť sa'>TU</a>"; }
?> A vôbec mi to neberie... Môžete mi pomôcť???
|
| 28 Nov 2010, 15:12 |
|
 |
|
VIP
Registrovaný: 7.2.2009 Príspevky: 2745 Bydlisko: Bratislava
Karma:
|
 Re: Registrace, Přihlášení za pomocí MySQL
Fuj! Ble! Argh! Taky otrasny kod som nevidel od svojej poslednej prace... 1) SQL ma funkciu md5? som nevedel... 2)mysql_numrows? nie nahodou mysql_num_rows? boze, sprav si v tom poriadok, tie zatvorky su totalna katastrofa, v tom by sa nevyznal nikto...
|
| 28 Nov 2010, 16:35 |
|
 |
|
Light Expert
Registrovaný: 6.10.2010 Príspevky: 67
Karma:
|
 Re: Registrace, Přihlášení za pomocí MySQL
diky za kritiku.... Tú som už asi dávno potreboval. Kód si opravím a skúsim. Díky za pomoc.P.S. Už tam nie je žiadna chyba?
|
| 28 Nov 2010, 16:41 |
|
 |
|
Moderátor
Registrovaný: 9.9.2005 Príspevky: 21160 Bydlisko: Prievidza
Karma:
|
 Re: Registrace, Přihlášení za pomocí MySQL
stale su tam tie chyby co ti napisal. Co si vlastne opravil? A kde?
|
| 28 Nov 2010, 16:46 |
|
 |
|
Light Expert
Registrovaný: 6.10.2010 Príspevky: 67
Karma:
|
 Re: Registrace, Přihlášení za pomocí MySQL
Ci TERAZ tam nie su nejake chyby (okrem zátvoriek, samozrejme)....
|
| 28 Nov 2010, 16:59 |
|
 |
|
VIP
Registrovaný: 7.2.2009 Príspevky: 2745 Bydlisko: Bratislava
Karma:
|
 Re: Registrace, Přihlášení za pomocí MySQL
No skus toto, neprechadzal som znak po znaku, ale aspon som ti to trosku upravil, aby si sa v tom aspon ty sam vyznal.. Kód: <?php session_start(); include ('../endora.php'); if(! isset($_SESSION['meno'])) { if(isset($_POST['meno'])) { $meno = htmlspecialchars(addslashes($_POST['meno'])); $heslo = md5(htmlspecialchars(addslashes($_POST['heslo']))); include('Databasa/db.php'); $sql = "SELECT meno FROM trhov WHERE meno='$meno' AND heslo='$heslo'"; $result = mysql_query($sql); if(mysql_num_rows($result)) { $_SESSION['meno'] = mysql_result($result,0,"meno"); $_SESSION['pr_meno'] = mysql_result($result,0,"pr_meno"); echo("Ahoj"); } }else include ("login.html"); }else{ $meno = $_SESSION['meno']; echo("Vitajte $meno. Ak sa chcete odhlásiť kliknite <a href='logout.php' title='odhlásiť sa'>TU</a>"); }
?>
|
| 28 Nov 2010, 17:04 |
|
 |
|
Light Expert
Registrovaný: 6.10.2010 Príspevky: 67
Karma:
|
 Re: Registrace, Přihlášení za pomocí MySQL
Velmi vrele diky......
|
| 28 Nov 2010, 18:46 |
|
|
|
Stránka 1 z 1
|
[ Príspevkov: 15 ] |
|
| Užívatelia prezerajúci fórum: Žiadny registrovaný užívateľ nie je prítomný a 0 hostia |
|
Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre Nemôžete zasielať súbory v tomto fóre
|
|
 |