Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Panel logowania php i mysql
Forum PHP.pl > Forum > Przedszkole
redelek
Witam,

Jak każdy początkujący pomimo dużej ilości dostępnych skryptów naskrobałem coś sam.
Nie ma to wyglądu bardziej chodzi mi o kod i bezpieczeństwo.

W wolnej chwili jeśli możecie zobaczcie pliki które tu przedstawię i panel działający na stronie. Jedna serdeczna prośba jeśli komuś się uda włamać to nie rozwalajcie bazy danych , ani mojego virtualnego serwera dobrze.

Logowanie do strony

plik login.php

  1. <?php
  2. if(isset($_POST['d56b699830e77ba53855679cb1d252da'])) {
  3. $polacz = @mysql_connect('localhost', 'root', '') or die ('Problemy !!');
  4. mysql_select_db('login');
  5. $zapytanie= "SELECT id, uzytkownik, haslo FROM user".
  6. " WHERE uzytkownik = '".$_POST['f_uzytkownik']."'".
  7. " AND haslo = '".md5($_POST['f_haslo'])."'; ";
  8. //echo $zapytanie.'<br>';
  9. $wynik = mysql_query($zapytanie)
  10. or die('Błąd zapytania do MySQL :(!!!!!!!');
  11.  
  12. if (mysql_num_rows($wynik) == 1) {
  13. $_SESSION['uzytkownik'] = $_POST['f_uzytkownik'];
  14. $_SESSION['stan'] = '1';
  15. $data_log=date('Y-m-d H:i:s');
  16. //echo "Zostaniesz przekierowany na oryginalna strone ktora wybrales...<br> ";
  17. $zapytanie="UPDATE user SET data_log='".$data_log."'"." WHERE uzytkownik='".$_POST['f_uzytkownik']."'; ";
  18. mysql_query($zapytanie);
  19. header("Location: adm/index.php");
  20.  
  21. }else{
  22.  
  23. echo "<a href=\"login.php\" style=\"text-decoration:none;\">Dane nieprawidłowe.
  24.  Zapisz na kartce i policz do 10 ... POPRAW ...</a>";
  25. }
  26. }else{
  27.  
  28. echo "<form action=\"login.php\" method=\"post\" enctype=\"multipart/form-data\" name=\"login_users\" >
  29. Uzytkownik: <input maxlength=\"50\" size=\"50\" name=\"f_uzytkownik\" type=\"text\" /><br />
  30. Hasło: <input size=\"20\" maxlength=\"12\" name=\"f_haslo\" type=\"password\" /><br />
  31. <input type=\"submit\" value=\"Zaloguj się\" name=\"d56b699830e77ba53855679cb1d252da\" /><br />
  32. </form>";
  33. }
  34.  
  35. ?>


Plik funkcji lib.php wiem, że funkcje służą do innych celów, ale to początek.
  1. <?php
  2. //sprawdz_login();
  3. function sprawdz_login(){
  4.  
  5. If (($_SESSION['stan'] == '1') && ($_SESSION['uzytkownik'] > '')){
  6. echo "OK<br>";
  7. echo "Witaj <b>".$_SESSION['uzytkownik']."</b> <a href='index.php?wyloguj=tak'>Wyloguj się</a><br />";
  8. //echo "<br>Jesteś na stronie Administracyjnej";
  9. }else{
  10. if($_SESSION["zalogowany"]==0){
  11. echo "Nie masz dostępu do tej części witryny. <a href='../index.php'>Zaloguj się</a></body></html>"; 
  12. exit();}
  13. }
  14. if($_GET["wyloguj"]=="tak"){$_SESSION["stan"]=0;
  15. echo "Zostałeś wylogowany z serwisu";
  16. //exit();
  17. header("Location: ../index.php");
  18.  
  19. }
  20. }
  21. ?>


Pliki ze stronami na których już są tajne dane (index.php i rejestracja.php )

  1. <?php
  2. require("lib.php");
  3. sprawdz_login();
  4. ?>
  5. <a href="opis.php">Opis</a><br />
  6. <a href="linki.php">Linki</a><br />
  7. <a href="rejestracja.php">Rejestracja</a><br />


Plik Rejestracja.php

  1. <?php
  2. require("lib.php");
  3. sprawdz_login();
  4.  
  5. echo "<font color=\"blue\"><center>STRONA Rejestracji użytkownika</center></font><br />";
  6.  
  7. if(isset($_POST['upload']))
  8. {
  9. $imie=$_POST['f_imie'];
  10. $nazwisko=$_POST['f_nazwisko'];
  11. $e_mail=$_POST['f_email'];
  12. $uzytkownik=$_POST['f_uzytkownik'];
  13. $haslo=md5($_POST['f_haslo']);
  14. $tel_kontaktowy=$_POST['f_telkontaktowy'];
  15. $data_rej=date('Y-m-d H:i:s');
  16. $status='AKTYWNY';
  17. // łączymy się z bazą
  18. $polacz = @mysql_connect('localhost', 'root', '') or die ('Problemy !!');
  19. mysql_select_db('login');
  20. {
  21. $uzytkownik = addslashes($uzytkownik);
  22. }
  23.  
  24. $query = "INSERT INTO user (imie, nazwisko, e_mail, uzytkownik, haslo, tel_kontaktowy, data_rej, data_l
    o
  25. , status ) ".
  26.  "VALUES ('$imie', '$nazwisko', '$e_mail', '$uzytkownik', '$haslo', '$tel_kontaktowy','$data_rej','$data_rej', '$status')";
  27.  
  28. mysql_query($query) or die('Błąd dodawania rekordu :( Spróbuj ponownie');
  29. //include 'include/DB_close.php';//*/
  30. //header("Location: index.php");
  31. echo "Użytkownik <b>$uzytkownik</b> został dodany do bazy.<br />".
  32. " Kliknij <b>Wyloguj</b> by przetestować nowe konto..<br />";
  33. echo "<a href=\"index.php\">Strona główna Admina</a>";
  34. }
  35. ?>
  36. <form action="rejestracja.php" method="post" enctype="multipart/form-data" name="uploadform">
  37. Imię: <input maxlength="50" size="50" name="f_imie" type="text" /> <br />
  38. Nazwisko: <input maxlength="50" size="50" name="f_nazwisko" type="text" /><br />
  39. E-mail: <input maxlength="50" size="50" name="f_email" type="text" /><br />
  40. Użytkownik: <input maxlength="50" size="50" name="f_uzytkownik" type="text" /><br />
  41. Hasło: <input maxlength="50" size="50" name="f_haslo" type="text" /><br />
  42. Tel. kontaktowy: <input maxlength="50" size="50" name="f_telkontaktowy" type="text" /><br />
  43. <input value="Zarejestruj się ..." name="upload" type="submit" />
  44. </form><br />
  45. <a href="index.php">Strona główna Admina</a>


Całość można można potestować na Strona skryptu
użytkownik : test
hasło: test

Bardzo bym prosił o informację, czy jest on coś wart i czy drobne zmiany i będzie dobry.
Będę bardzo zobowiązany za sugestię i pomysły oraz pokazanie mi błędów ( ewentualny kod włamania smile.gif).
Nie oceniajcie wyglądu bo nie o to mi chodzi. Jest to stan bardzo surowy graficznie , chodzi o KOD.

Proszę o nie karcenie mnie zbyt mocno bo się potnę smile.gif

Pozdrawiam
Redelek
Shili
  1. <?php
  2. $zapytanie= "SELECT id, uzytkownik, haslo FROM user".
  3. " WHERE uzytkownik = '".$_POST['f_uzytkownik']."'".
  4. " AND haslo = '".md5($_POST['f_haslo'])."'; ";
  5. ?>

Radzę kodować tak, żeby nie opierać się na obecności magic_quotes. Te nie zawsze i nie wszędzie są włączone.
To samo na rejestracji - nie filtrujesz w ogóle danych pochodzących od użytkownika! Zawsze trzeba je filtrować.

Sam użytkownik addslashowany nie wystarczy, namieszać można też w emailu, albo w numerze telefonu.
Na marginesie, polecam nie addslashes, a dedykowaną pod mysql funkcję mysql_real_escape_string.
redelek
Cytat(Shili @ 30.06.2008, 13:07:55 ) *
Radzę kodować tak, żeby nie opierać się na obecności magic_quotes. Te nie zawsze i nie wszędzie są włączone.
To samo na rejestracji - nie filtrujesz w ogóle danych pochodzących od użytkownika! Zawsze trzeba je filtrować.

Sam użytkownik addslashowany nie wystarczy, namieszać można też w emailu, albo w numerze telefonu.
Na marginesie, polecam nie addslashes, a dedykowaną pod mysql funkcję mysql_real_escape_string.


Oki dzięki czytam i już patrzę
Zidane
Witam, jestem n00bkiem i jak wszystkie pliczki skopiuję na serwer to jak się próbuję rejestrować to wyskakuje mi napis "Problemy exclamation.gif !" Proszę o pomoc, myślę że to jest związane z tym

CODE
// łączymy się z bazą

$polacz = @mysql_connect('localhost', 'root', '') or die ('Problemy exclamation.gif ');

mysql_select_db('login');


PS Przepraszam jak coś za odkop tematu
peter13135
$polacz = @mysql_connect('host bazy danych', 'uzytkownik bazy danych', 'haslo bazy danych') or die ('Problemy exclamation.gif ');
w miejsce uzytkownik bazy danych musisz wstawić nazwe uzytkownika bazy danych rzeczywistego, tak samo z haslem i hostem
Zidane
No dzieki, super ale teraz mam następny błąd: "Błąd dodawania rekordu sad.gif Spróbuj ponownie" a zresztą sam sprawdź, www.zidane5.yoyo.pl

//Edit pomoże mi ktoś?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.