Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql]Prosty skrypt logowania wysypuje Apache'a
Forum PHP.pl > Forum > Przedszkole
petra999
Witajcie!
Zacząłem się bawić z php i doszło do skryptu logowania.
Napisałem sobie prosty skrypt i odpaliłem go na lokalnym serwerze stworzonym za pomocą Wampserver'a.
I za każdym razem jak testuje ten skrypt to wysypuje mi się Apache. Czy w moim skrypcie jest błąd? I przy okazji czy mój skrypt jest w miarę bezpieczny?
Pozdrawiam i z góry dziękuje za pomoc!

  1. <?php
  2. if(empty($_POST['login']) || empty($_POST['password']))
  3. {
  4. echo 'bład. nie podałeś loginu/hasła<br />';
  5. echo "<form action=\"index.php\" method=\"post\">
  6. <input type=\"text\" name=\"login\" /><br />
  7. <input type=\"password\" name=\"password\" /><br />
  8. <input type=\"submit\" value=\"Loguj\" /><br /><br />
  9. </form>";
  10. }
  11. else
  12. {
  13. $login = $_POST['login'];
  14. $password = sha1($_POST['password']);
  15.  
  16.  
  17. require_once('connect.php');
  18.  
  19. if(isset($_SESSION['access']))
  20. {
  21. echo 'zalogowany';
  22. }
  23. else
  24. {
  25. $query = "SELECT username, access FROM user WHERE username='$login' AND pass='$password'";
  26. $result = mysql_query($query);
  27. $row = mysql_fetch_array ($result, MYSQL_ASSOC);
  28. if($row)
  29. {
  30. $_SESSION['access'] = $row['access'];
  31. }
  32. else
  33. {
  34. echo 'błąd. podałeś błędne dane';
  35. echo '<a href="index.php"><br />Spróbój jeszcze raz.</a>';
  36. }
  37. }
  38. }
  39. ?>
Fifi209
Co oznacza wysypuje mi się? Zawiesza? Może tylko parser pokazuje błędy?
petra999
Pokazuje się raport o błędach, jako że pracuje na Windowsie, a w logach Apache'a pojawia się wpis o restarcie.
Fifi209
  1. $row = mysql_fetch_array ($result, MYSQL_ASSOC);


czemu nie: mysql_fetch_assoc

Pokaż ten connect.php

Sprawdź czy np. webserv czy xampp też tak reaguje.
Kszyhuu
Cytat(petra999 @ 26.08.2009, 15:18:37 ) *
I przy okazji czy mój skrypt jest w miarę bezpieczny?

Lepiej trzymać hasła w MD5. winksmiley.jpg
I wygodniej zrobić to na osobnym pliku np. logowanie.php

To dodajesz w dowolnym pliku:
  1. <form method="post" action="logowanie.php">
  2. Login:</b> <input type="text" name="login" size="10" class="input"><br>
  3. Pass:</b> <input type="password" name="pass" size="10" class="input"><br>
  4. <input class="input" type="submit" name="submit" value="Zaloguj">
  5. </form>


A to plik logowanie.php:
  1. <?php
  2.  
  3. mysql_connect('HOST','BAZA','PASS');
  4.  
  5.  
  6. $login = mysql_escape_string($_POST['login']);
  7. $pass = mysql_escape_string(md5($_POST['pass']));
  8.  
  9. $zapytanie = mysql_query("SELECT * FROM user WHERE login = '$login'");
  10. $dane = mysql_fetch_array($zapytanie);
  11.  
  12. if(isset($_POST['login']) && isset($_POST['pass'])) {
  13. if($login ==''.$dane['login'].'' && $pass ==''.$dane['pass'].'')
  14. {
  15.  
  16. $_SESSION['admin']='ok';
  17. $_SESSION['login']=''.$dane['login'].'';
  18.  
  19. /*TUTAJ MOŻESZ WALNĄĆ SESJĘ, CIACHO I PRZEKIEROWANIE
  20.  
  21. setcookie("log" , "log", time()+3600, "/","", 0);
  22.  header("Location: index.php");
  23. ALBO
  24. echo 'Zalogowano, kliknij <A HREF="XXX">tutaj</A>
  25. */
  26. }
  27.  
  28. else {
  29. echo 'Nie zalogowano.'; }
  30. }
  31.  
  32. ?>


I później w plikach dodajesz tylko:
  1. include("logowanie.php");
  2. if($_SESSION['admin'] == 'ok' && isset($_COOKIE['log'])) {
  3. KOD DLA ZALOGOWANYCH
  4. }
  5. else {
  6. echo 'Nie masz prawa tu przebywać.';
  7. }
erix
Cytat
I za każdym razem jak testuje ten skrypt to wysypuje mi się Apache.

Poszukaj w httpd.conf wczytywania modułu PHP do Apache i zmień z php5apache2_2.dll na php5apache2_2_filter.dll. Często pomaga. :]
petra999
Dzięki wszystkim za szybką odpowiedź.
Cytat(fifi209 @ 26.08.2009, 16:53:01 ) *
Pokaż ten connect.php


  1. <?php
  2.  
  3. $link = mysql_connect('localhost', 'root', '')
  4. or die('Problem z połączeniem z mysql ' . mysql_error());
  5. mysql_select_db('database1') or die('Nie mogę się połączyć z bazą');
  6.  
  7. ?>


Cytat
Poszukaj w httpd.conf wczytywania modułu PHP do Apache i zmień z php5apache2_2.dll na php5apache2_2_filter.dll. Często pomaga. :]

Niestety nie pomogło.

Cytat
Lepiej trzymać hasła w MD5. winksmiley.jpg

Czytałem na jakimś forum że MD5 łatwo złamać za pomocą tablic tęczowych.

Kod Kszyha działa, dzięki za podpowiedź.
Fifi209
Cytat(Kszyhuu @ 26.08.2009, 16:11:16 ) *
Lepiej trzymać hasła w MD5. winksmiley.jpg

Gdyż? Uzasadnij swoją wypowiedź...
Ja czytałem, że sha1 jest bezpieczniejsze...
Kszyhuu
Cytat(fifi209 @ 26.08.2009, 17:57:51 ) *
Gdyż? Uzasadnij swoją wypowiedź...
Ja czytałem, że sha1 jest bezpieczniejsze...


Na pewno nie. W przypadku Sha1 odnotowano lepszy wynik podatności na łamanie niż w MD5. I nie opieram się tutaj na artykule napisanym przez kogoś kto nie popiera tego żadnymi dowodami. Opieram się na opinii profesora z polibudy, który uczy mnie infy. Sha1 to nie najlepsze rozwiązanie. Obecnie stawia się na MD5/Sha2 (głównie Sha512).
erix
Ekhm, nie róbcie offtopa - jest osobny wątek nt. MD5/SHA1 i ogólnie hashowania.
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.