Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][SQL]Strona na hasło
qdesigner
post
Post #1





Grupa: Zarejestrowani
Postów: 27
Pomógł: 1
Dołączył: 18.11.2008

Ostrzeżenie: (0%)
-----


Witam!

Szukałem rozwiązania na różnych stronach oraz forach natomiast nic nie znalazłem, więc pytam.
Tak zupełnie zielony z PHP nie jestem natomiast mógłbym zostać opierniczony że pisze pierwszego posta poza subforum "przedszkole".

Mam problem, a mianowicie zrobiłem prosty formularz zamówienia, w którym użytkownik wpisuje swoje dane oraz login i hasło.
Wszystkie dane są zapisywane do bazy danych.
W następnym kroku chciałem zrobić stronkę na, którą użytkownik miałby dostęp po wpisaniu loginu i hasła.

Wszystko wygląda prosto, ale tylko gdy strona jest na jedno i to samo hasło.

A ja chciałbym, aby każdy użytkownik miał swoje hasło i swój login.

Zrobiłem skrypt, który czyta z pliku pojedyncze hasło.

Ale nie mogę przy każdym nowym użytkowniku modyfikować pliku na serwerze.

Dlatego chciałem powiązać wpis użytkownika do bazy (hasło i login) ze skryptem logowania. Natomiast nie wiem w jaki sposób mam przeszukać bazę w poszukiwaniu hasła.
Użyć pętli?
Jak miałaby wyglądać taka pętla?

Miałoby to wyglądać tak:

Pierwsze zamówienie (użytkownik podaje login i hasło) -> wpis do bazy -> kolejne zamówienie (logowanie przez stronę na hasło) -> wpisane hasło porównuje z hasłami z bazy, jak znajdzie hasło to porównuje z loginem, jeżeli jest ok to przechodzi na stronkę zastrzeżoną hasłem -> pobiera pozostałe dane (zniżka itp.)

Proszę o jakieś naprowadzenie.
Z góry dziękuje.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 18)
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Dlatego chciałem powiązać wpis użytkownika do bazy (hasło i login) ze skryptem logowania. Natomiast nie wiem w jaki sposób mam przeszukać bazę w poszukiwaniu hasła.

To zwykły SELECT z odpowiednim WHERE (sprawdzasz, czy login=wpisany login, hasło=wpisane hasło). Jeśli zwraca rekord, poprawne logowanie, jeśli nie - intruz. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
qdesigner
post
Post #3





Grupa: Zarejestrowani
Postów: 27
Pomógł: 1
Dołączył: 18.11.2008

Ostrzeżenie: (0%)
-----


No i właśnie chodzi o to w jaki sposób to sprawdzić czy login=login wpisany? Wiem jak pobrać kolumnę z tabeli tylko jak mam 50 loginów i 50 haseł to jak je przeszukać?

Jak powinno wyglądać takie przeszukanie?

Chyba,że chodziło Ci o WHERE haslo LIKE '$pass'?

Ten post edytował qdesigner 18.11.2008, 22:53:02
Go to the top of the page
+Quote Post
PanGuzol
post
Post #4





Grupa: Zarejestrowani
Postów: 353
Pomógł: 50
Dołączył: 28.07.2005
Skąd: Łaziska Górne

Ostrzeżenie: (0%)
-----


  1. SELECT * FROM tabela_z_loginami_i_haslami WHERE login='login podany przez użytkownika' AND haslo='haslo podane przez uzytkownika'
Go to the top of the page
+Quote Post
mecenas
post
Post #5





Grupa: Zarejestrowani
Postów: 80
Pomógł: 5
Dołączył: 23.09.2008
Skąd: Chełmno/Toruń

Ostrzeżenie: (0%)
-----


Cytat
Tak zupełnie zielony z PHP nie jestem natomiast mógłbym zostać opierniczony że pisze pierwszego posta poza subforum "przedszkole".


Oj chyba jednak jesteś (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Poszukaj na googlu tutoriali. Warto poczytać (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Podpowiedź: select sprawdzający warunki i potem przykładowo mysql_num_rows (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Bo chyba nie chodzi Ci o gotowca? (IMG:http://forum.php.pl/style_emoticons/default/dry.gif)
Go to the top of the page
+Quote Post
qdesigner
post
Post #6





Grupa: Zarejestrowani
Postów: 27
Pomógł: 1
Dołączył: 18.11.2008

Ostrzeżenie: (0%)
-----


Z mysql-em dopiero zaczynam to fakt. W php się sporo bawiłem. Dziękuję za informacje. Aż taki zielony nie jestem - napisałem skrypt do pobierania danych z formularza, a wcześniej utworzyłem bazę danych. "Zielony" oznacza - nic nie kumam w temacie,a ja potrzebuje drobnych wskazówek. Co do bazy danych wolę się upewnić bo już raz metodą prób i błędów przeciążyłem serwer. I od razu mówię że nie chcę gotowca :-P

Przeczytałem już kilka tutoriali (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

chodzi mniej więcej o coś takiego?
  1. <?php
  2. polaczenie z baza
  3. ..
  4. wyszukanie
  5.  
  6. $num=mysql_numrows($result);
  7.  
  8. if($num!=0)
  9. {
  10. $_SESSION[haslo] = $haslo;
  11. header ("Location: plik-na-hslo.php");
  12. }
  13.  
  14. else
  15. {
  16. echo 'Podałeś niewłaściwy login lub hasło';
  17. }
  18. ?>


Ten post edytował qdesigner 18.11.2008, 23:43:28
Go to the top of the page
+Quote Post
hostingekspert
post
Post #7





Grupa: Zarejestrowani
Postów: 51
Pomógł: 5
Dołączył: 12.04.2007
Skąd: 1=1

Ostrzeżenie: (0%)
-----


1. na początku kodu, powiedzmy w linii 0 dodaj session_start();
2. przed polaczeniem z baza ustaw
if (!empty($_POST['login'] && !empty($_POST['haslo'])
{ //logowanie }
else
echo '
<form method="post">
Login: <input type="text" name="login">
Hasło: <input type="text" name="haslo">
</form>';
3. 11 linijke zamieniłbym na przechowywanie loginu, identyfikatora swiadczacego o zalogowaniu np. $_SESSION['zalogowany']='tak';
4. 12 linijka nie podoba mi się, wystarczyłoby wpisać adres w przeglądarce do pliku plik-na-haslo.php, aby uzyskac dostep bez logowania, w plikach które maja wymagac autoryzacji umiesciłbym cos na styl if ($_SESSION['zalogowany']=='tak')
{

//zawartosc pliku

}
else
echo '
<form method="post">
Login: <input type="text" name="login">
Hasło: <input type="text" name="haslo">
</form>';
5. napisalem to bez funkcji, ale juz z samych poczatkow poczytaj o programowaniu funkcyjnym, jest wygodniejsze, a z czasem bedzie latwiej Ci przejsc na programowanie obiektowe jesli z php wiazesz przyszlosc
Go to the top of the page
+Quote Post
qdesigner
post
Post #8





Grupa: Zarejestrowani
Postów: 27
Pomógł: 1
Dołączył: 18.11.2008

Ostrzeżenie: (0%)
-----


Cytat(hostingekspert @ 19.11.2008, 01:33:04 ) *
4. 12 linijka nie podoba mi się, wystarczyłoby wpisać adres w przeglądarce do pliku plik-na-haslo.php, aby

Spokojnie pliki wymagające autoryzacji też bym zabezpieczył po to właśnie przenoszę hasło oraz login w sesji.
Zawartość strony z "plik-na-haslo.php" wyświetlałaby sie dopiero po autoryzacji.

Dziekuje również za cenne wskazówki.

Pozdrawiam.
Go to the top of the page
+Quote Post
erix
post
Post #9





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Tak, jak przedmówcy:
Cytat
  1. <?php
  2. if($num!=0)
  3. {
  4. $_SESSION[haslo] = $haslo;
  5. header ("Location: plik-na-hslo.php");
  6. }
  7. ?>

Ale po co trzymasz całe hasło w sesji? Nie kuś losu. (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Wystarczy Ci chociażby $_SESSION['authorized'] = true;

ad. punktu 4. Jak wcześniej napisałem. Do tego register_globals na off i (IMG:http://forum.php.pl/style_emoticons/default/guitar.gif)

Cytat
Co do bazy danych wolę się upewnić bo już raz metodą prób i błędów przeciążyłem serwer.

A o cache'u słyszałeś? (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif)

Ten post edytował erix 19.11.2008, 16:59:55
Go to the top of the page
+Quote Post
qdesigner
post
Post #10





Grupa: Zarejestrowani
Postów: 27
Pomógł: 1
Dołączył: 18.11.2008

Ostrzeżenie: (0%)
-----


Tylko problem jest taki że jak w sesji nie przekaże hasła i loginu to w jaki sposób na stronie "na hasło" pobiorę resztę danych z tabeli?

Np. w celu autoryzacji wyszukuje loginu i hasła jeżeli się zgadza to umożliwiam dostęp i wtedy przechodzi na stronę "na hasło" i na tej stronie ma pobierać resztę danych użytkownika np. ile kupił produktów i jaką ma zniżkę.

A przekazując samo:

$_SESSION['authorized'] = true;

musiałbym jeszcze raz w pliku "na hasło" pytać o login i hasło. chyba żebym zrobił to w jednym pliku. Tak aby treść była ukryta i pojawiała się po wpisaniu loginu i hasła - wtedy będę miał możliwość operowania na pobranym z bazy haśle i loginie.
Go to the top of the page
+Quote Post
erix
post
Post #11





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Nie musiałbyś pytać, bo w sesji już miałbyś zapisane UŻYTKOWNIK ZALOGOWANY, czy też samo ID usera (co w Twoim wypadku rozwiązywałoby problem).

Przecież tej flagi nikt Ci z zewnątrz nie przestawi (pomijam fakt ingerencji w pliki sesyjne, czy przechwycenie identyfikatora sesji).
Go to the top of the page
+Quote Post
qdesigner
post
Post #12





Grupa: Zarejestrowani
Postów: 27
Pomógł: 1
Dołączył: 18.11.2008

Ostrzeżenie: (0%)
-----


No tak na temat zalogowania nie musiałbym pytać ale po to żeby pobrać resztę danych z bazy. Bo wyszukałem po loginie i haśle czy taki user istnieje. Jeżeli tak to w sesji jest przekazywana informacja o autoryzacji. A czy można przesłać i info o zalogowaniu $_SESSION['authorized'] = true; i info o ID usera?
Go to the top of the page
+Quote Post
erix
post
Post #13





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




No można. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Ale po co oba? Wstawiasz np:

  1. <?php
  2. $_SESSION['user'] = 38472;
  3. ?>


i sprawdzasz przez empty" title="Zobacz w manualu PHP" target="_manual ten klucz. ID 0 raczej nikt nie będzie miał.

Ten post edytował erix 19.11.2008, 18:37:26
Go to the top of the page
+Quote Post
qdesigner
post
Post #14





Grupa: Zarejestrowani
Postów: 27
Pomógł: 1
Dołączył: 18.11.2008

Ostrzeżenie: (0%)
-----


Fajny numerek,ale aż tylu userów nie będzie (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Po to oba żeby pierwszym if($_SESSION['authorized'] == true) {} otworzyć dostęp do zablokowanej treści a drugim pobrać dane z bazy już po odblokowaniu treści. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)


Chyba że chodziło Ci o coś takiego:

if (!empty($ID)
{
treść na hasło
}

Ten post edytował qdesigner 19.11.2008, 19:04:08
Go to the top of the page
+Quote Post
erix
post
Post #15





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Ale przecież niezalogowany user nie będzie trzymał identyfikatora w sesji. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Po co nadmiarowe dane?
Go to the top of the page
+Quote Post
qdesigner
post
Post #16





Grupa: Zarejestrowani
Postów: 27
Pomógł: 1
Dołączył: 18.11.2008

Ostrzeżenie: (0%)
-----


  1. <?php
  2.  
  3.  
  4. if (!empty($_POST['login']) && !empty($_POST['haslo']))
  5. {
  6. $user="xxx";
  7. $password="xxx";
  8. $database="xxx";
  9. mysql_connect(localhost,$user,$password);
  10. @mysql_select_db($database) or die( "Unable to select database");
  11. $query="SELECT * FROM klienci WHERE login='$login' AND haslo='$haslo'";
  12.  
  13. $result=mysql_query($query);
  14. $num=mysql_numrows($result);
  15.  
  16. $id=mysql_result($result,"id");
  17.  
  18. if(!empty($num))
  19. {
  20. $_SESSION[ID] = $id;
  21. header ("Location: mietek.php");
  22. }
  23. else
  24. {
  25. echo 'Podałeś(aś) niewłaściwy login lub hasło';
  26. }
  27. }
  28. else
  29. {
  30. <form method="post">
  31. Login: <input type="text" name="login">
  32. Hasło: <input type="text" name="haslo">
  33. <INPUT TYPE="SUBMIT" VALUE="Zaloguj">
  34. </form>';
  35. }
  36.  
  37. ?>


Zrobiłem coś takiego tylko jest problem że czy podam dobre dane czy złe to i tak przekierowuje do pliku. Jaki błąd popełniłem? Kombinuje już sporo i nie mogę go znaleźć.
Go to the top of the page
+Quote Post
piotrooo89
post
Post #17


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




ja korzystam z takiego logowania...
  1. <?php
  2.    ob_start();
  3.    session_start();
  4.    
  5.    $login = $_POST['loguj'];
  6.    if($login)
  7.    {
  8.        $user = $_POST['login'];
  9.        $haslo = $_POST['pass'];
  10.        
  11.        include('../mysql.inc');
  12.        
  13.        $sql = mysql_query("SELECT * FROM admin WHERE user='$user' AND pass='$haslo'");
  14.        
  15.        if(@mysql_num_rows($sql))
  16.        {
  17.            session_register("uzytkownik");
  18.            header("Location: admin.php");
  19.        exit;
  20.        }
  21.        else
  22.        {
  23.            $message="Nieprawidłowa nazwa użytkownika lub hasło.";
  24.        }
  25.    }
  26.    ob_end_flush();
  27. ?>
  28. <html>
  29. <head>
  30.    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  31. <title></title>
  32. </head>
  33. <body>
  34.  
  35. <form name="login" action="<? echo $_SERVER['PHP_SELF']; ?>" method="post">
  36.    <table>
  37.        <tr>
  38.            <td>Login:</td><td><input type="text" name="login" id="login" /></td>
  39.        </tr>
  40.        <tr>
  41.            <td>Pass:</td><td><input type="password" name="pass" id="pass" /></td>
  42.        </tr>
  43.    </table>
  44.        <input type="submit" name="loguj" value="Loguj" />
  45. </form>
  46.  
  47.  
  48. </body>
  49. </html>


i później na stronie do której ma być hasło sprawdzam:
  1. <?php
  2.    ob_start();
  3.    session_start();
  4.    
  5.    if(!session_is_registered("uzytkownik"))
  6.    {
  7.        header("Location: login.php");
  8.    }
  9.    ob_end_flush();
  10. ?>


Ten post edytował piotrooo89 19.11.2008, 21:01:17
Go to the top of the page
+Quote Post
qdesigner
post
Post #18





Grupa: Zarejestrowani
Postów: 27
Pomógł: 1
Dołączył: 18.11.2008

Ostrzeżenie: (0%)
-----


A czy mogę w sesji przenieść cos takiego?

$_SESSION["ident"]=$id;


Logowanie już działa natomiast po przeniesieniu do drugiego pliku nie ma nic w $_SESSION["ident"]

Już działa (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
erix
post
Post #19





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




No pewnie, że możesz; sesja, to tak naprawdę zwykła tablica. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

[quote]Logowanie już działa natomiast po przeniesieniu do drugiego pliku nie ma nic w $_SESSION["ident"]

Już działa [/quuote]
To w końcu działa, czy nie? (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 11:55