Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Logowanie i prziekierowanie do linku z bazy, Po zalogowaniu sie przekierowuje do URL ktory jest w bazie podany
norfear
post
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 14.11.2011

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


Witam
Mam maly problem. Gdyz mam prosty system logowania, chcialem dolozyc mu funkcje taka ze jak uzytkownik wpisze login i haslo to go przeniesie do adresu zawartego w bazie mysql.

Baza wyglada nastepujaco
ID / Login / Haslo / Url

Zawartosc pliku z logowanie:

Kod
<?php
session_start();
mysql_connect("XXX");
mysql_select_db("XXX");

if(isset($_SESSION['zalogowany'])) {
echo "Witam, ".$_SESSION['uzytkownik'];
}else{

if(isset($_POST['wyslij'])) {


   if(mysql_num_rows(mysql_query("SELECT uzytkownik, haslo
   FROM logowanie WHERE uzytkownik = '".$_POST['uzytkownik']."'
   && haslo = '".$_POST['haslo']."' ")) > 0) {


       if(mysql_num_rows(mysql_query("SELECT id FROM logowanie
       WHERE uzytkownik = '".$_POST['uzytkownik']."'
       && haslo = '".$_POST['haslo']."' ")) > 0 ) {


           $_SESSION['zalogowany'] = true;
           $_SESSION['uzytkownik'] = $_POST['uzytkownik'];
           $_SESSION['haslo'] = $_POST['haslo'];
           echo =============================== ( tutaj experymentuje ale ciagle brak sukcesu )


       } else {

   echo "Złe hasło, proszę spróbować ponownie";
}
} else {
   echo "Nie ma takiego użytkownika";
}
} else {

?>
<form method='POST' action='logowanie.php'>
<b>nazwa uzytkownika:</b> <input type='text' name='uzytkownik'><br>
<b>haslo:</b> <input type='password' name='haslo'><br>
<input type='submit' value='Wyślij' name='wyslij'>
</form>    

<?php
}
}
?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
konrados
post
Post #2





Grupa: Zarejestrowani
Postów: 623
Pomógł: 79
Dołączył: 16.01.2008

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


Ale Ty tu nigdzie nie pobierasz danych z bazy, jedynie zliczasz ilość rekordów (w dodatku dwa razy, chyba, że źle widzę). Użyj mysql_fetch_assoc ( http://php.net/manual/en/function.mysql-fetch-assoc.php )

Ponadto-nie czyścisz danych usera, podatne na sql injection (zainteresuj się mysql_real_escape_string)

Ponadto#2 - haseł nie zapisujemy plain textem, tylko robimy z nich md5 lub sha1, najlepiej solone.
Go to the top of the page
+Quote Post
-Wazniak96-
post
Post #3





Goście







Sprobuj tak:
  1. <?php
  2. if(isset($_SESSION
  3. ['zalogowany'])) {
  4. echo "Witam, ".$_SESSION
  5. ['uzytkownik'];
  6. }else{
  7. if(isset($_POST['wyslij'])) {
  8. ("SELECT uzytkownik, haslo
  9. FROM logowanie WHERE
  10. uzytkownik = '".$_POST
  11. ['uzytkownik']."'
  12. && haslo = '".$_POST
  13. ['haslo']."' ")) > 0) {
  14. $_SESSION
  15. ['zalogowany'] = true;
  16. $_SESSION
  17. ['uzytkownik'] = $_POST
  18. ['uzytkownik'];
  19. $_SESSION['haslo'] =
  20. $_POST['haslo'];
  21.  
  22. $use = mysql_fetch_assoc(mysql_query("SELECT uzytkownik, haslo
  23. FROM logowanie WHERE
  24. uzytkownik = '".$_POST
  25. ['uzytkownik']."'
  26. && haslo = '".$_POST
  27. ['haslo']."' "));
  28. $link = $use['link'];
  29. header(Location: $link);
  30. } else {
  31. echo "Nie ma takiego
  32. użytkownika lub podane hasło jest nieprawidłowe.";
  33. }
  34. } else {
  35. ?>
  36. <form method='POST'
  37. action='logowanie.php'>
  38. <b>nazwa uzytkownika:</b> <input
  39. type='text'
  40. name='uzytkownik'><br>
  41. <b>haslo:</b> <input
  42. type='password' name='haslo'><br>
  43. <input type='submit'
  44. value='Wyślij' name='wyslij'>
  45. </form>
  46. <?php
  47. }
  48. }
  49. ?>


Sorry za błędy jezeli jakieś są ale edytowane przez fona wink.gif
Go to the top of the page
+Quote Post
norfear
post
Post #4





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 14.11.2011

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


Konrados

Z tego co przeczytalem twoja wypowiedz i staralem sie to rozkminic smile.gif
To wychodzi na to ze lepiej to wykasawoac wszystko i zaczac od nowa.
Kurde czlowiek nie chce gotowca uzywac a robi wtedy tyle glopot

-Wazniak96-

To co napisales wciaz nie dziala moze to kwestja przecinku rozbiore ten kod na czesci pierwsze i zoabcze gdzie jest blad
Go to the top of the page
+Quote Post
konrados
post
Post #5





Grupa: Zarejestrowani
Postów: 623
Pomógł: 79
Dołączył: 16.01.2008

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


Cytat
To co napisales wciaz nie dziala moze to kwestja przecinku rozbiore ten kod na czesci pierwsze i zoabcze gdzie jest blad


O wiele lepiej jest używać jakiegoś dobrego IDE, np. polecam Eclipse (z dodatkiem PDT) błędy składni od razu na czerwono robi (zapomniany przecinek, apostrof czy nawias).
Go to the top of the page
+Quote Post
Niktoś
post
Post #6





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Ja mam tylko pytanie -po co pchasz wszystko do sesji?Przerażające jest też ,że pchasz także hasło i to nieszyfrowane. Hasła w ogóle nie powinno się zapisywać do sesji -poczytaj o a takach na sesje, może zmienisz zdanie.
Go to the top of the page
+Quote Post
norfear
post
Post #7





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 14.11.2011

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


Oki dzieki za porgramik powinno być latwiej. smile.gif

Przepraszam za glopi tekst wiem ze tak sie nie postepuje.

Ale czy mogl bys mi na chwile obecna ten kod kolegi poprawic w tym programie bo musze na poniedzialek oddac pewna czesc w pracy smile.gif a juz powoli mam dosc siedzenia przy kompie smile.gif

baza mysql:
logowanie
tabele:
id / login / haslo / url

W ramach wymiany zawsze mozesz do nie uderzyc w kesti grafiki smile.gif

P.S
A co do szyfrowania itd ja sie poprostu ucze tego i wiem ze jeszcze sporo przedemna narazie zrozumialem oco chodzi ztym szyfrowaniem terazm rozkminiam z ta sesja jak to zrobic tongue.gif

Ten post edytował norfear 3.06.2012, 18:42:28
Go to the top of the page
+Quote Post
Niktoś
post
Post #8





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Po prostu ten skrypt masz źle napisany.
Przy logowaniu ,pobierasz z inputów to co użytkownik wpisał (hasło i login),sprawdzasz w bazie danych czy taki użytkownik istnieje jeśli tak to do sesji zapisujesz np. tylko jego id z bazy danych i tej sesji z id użytkownika używasz na kolejnych podstronach przy pomocy bazy danych do ponownej identyfikacji użytkownika.

Ten post edytował Niktoś 3.06.2012, 18:56:30
Go to the top of the page
+Quote Post
norfear
post
Post #9





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 14.11.2011

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


Kurde napisales to tak prosto. Ze idzie to zrozumiec
Nie mogles tego napisac z rana smile.gif Teraz to ja mam juz problem jak google zalaczyc :]

Dobra zaczolem to bazgrac od poczatku tak jak to mi napisales.

Kod
session_start();
mysql_connect("XXX");
mysql_select_db("XXX");

$login=$_POST[‘login’];
if($login) {
$uzytkownik=$_POST[‘uzytkownik’];
$md5_haslo=md5($_POST[‘haslo’]);

$rezultat=mysql_query("select * FROM logowanie WHERE uzytkownik=’$uzytkownik’ AND haslo=’$md5_haslo’");
session_register("uzytkownik");
header ============ standardowo tutaj mam problem bo nie wiem jak wywolac url
exit;
  }else {
  $message="Nieprawidłowa nazwa użytkownika lub hasło";
  }
}



<form method='POST' action='logowanie.php'>
<b>nazwa uzytkownika:</b> <input type='text' name='uzytkownik'><br>
<b>haslo:</b> <input type='password' name='haslo'><br>
<input type='submit' value='Wyślij' name='wyslij'>
</form>


ogolnie to chyba taki schemat bedize jak dobrze kminie jest to pisane z palca wiec pewnie to nie zadziala

Ten post edytował norfear 3.06.2012, 19:15:35
Go to the top of the page
+Quote Post
Niktoś
post
Post #10





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Żeby posługiwać się md5 podczas logowania ,to na stronie rejestracji hasło użytkownika także musisz zapisywać w md5.
Go to the top of the page
+Quote Post
konrados
post
Post #11





Grupa: Zarejestrowani
Postów: 623
Pomógł: 79
Dołączył: 16.01.2008

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


@norfear
Łap, w drodze wyjątku:)

Musisz tu pozmieniać parę rzeczy (np. nazwę tabeli).
Plus, tak jak powiedział Niktoś - ja tu nie robię md5 bo pewnie przy rejestracji też tego nie robisz.

  1. <?php
  2. $conn=mysql_connect("localhost",'root','jakies_haslo');
  3. if(isset($_SESSION['zalogowany'])) {
  4. echo "Witam, ".$_SESSION['uzytkownik'];
  5. }else{
  6. if(isset($_POST['wyslij'])) {
  7. $uzytkownik=mysql_real_escape_string($_POST['uzytkownik']);
  8. $pass=mysql_real_escape_string($_POST['haslo']);
  9. //tu zamień tabelkę na własną
  10. $r=mysql_query("SELECT * FROM users WHERE `uzytkownik` = '$uzytkownik' AND `haslo` = '$pass'") or die(mysql_error());
  11. if($r && mysql_num_rows($r)>0)
  12. {
  13. $user=mysql_fetch_array($r);
  14. $_SESSION['zalogowany'] = true;
  15. $_SESSION['uzytkownik'] = $uzytkownik;
  16. $_SESSION['uzytkownik_id'] = $r['id'];
  17. header( "Location: {$user['url']}") ;
  18. //$_SESSION['haslo'] = $_POST['haslo'];
  19. } else {
  20. echo 'Zły login lub hasło';
  21. }
  22. } else {
  23.  
  24. ?>
  25. <form method='POST' action='tests.php'><!-- tu zamień na logowanie.php -->
  26. <b>nazwa uzytkownika:</b> <input type='text' name='uzytkownik'><br>
  27. <b>haslo:</b> <input type='password' name='haslo'><br>
  28. <input type='submit' value='Wyślij' name='wyslij'>
  29. </form>
  30.  
  31. <?php
  32. }
  33. }
  34. ?>
Go to the top of the page
+Quote Post
norfear
post
Post #12





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 14.11.2011

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


ŁoŁ

Stary dziekuje naprawde. Uda mi sie polozyc o normalnej godzinie przez to spac smile.gif
Jeszcze tylko kilka drobnych modyfikacji i wkoncu do łóżka.

Jak by co to masz u mnie piwo jak i pomoc jeśli byś potrzebowal w dziale grafiki i animacji.


Tema to zamknięcia jeszcze raz wszystkim dziękuje za pomoc.

Ten post edytował norfear 3.06.2012, 20:12:28
Go to the top of the page
+Quote Post
konrados
post
Post #13





Grupa: Zarejestrowani
Postów: 623
Pomógł: 79
Dołączył: 16.01.2008

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


Cytat
Jak by co to masz u mnie piwo jak i pomoc jeśli byś potrzebowal w dziale grafiki i animacji.


Będę pamiętałsmile.gif
Go to the top of the page
+Quote Post
norfear
post
Post #14





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 14.11.2011

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


Moze to juz jest glopie pytanie ale zalozmy ze zaloguje sie tak jak to pokazales i sesja jest otwarta dla komputer na ktorym to nastapilo.

Wylaczam przegladrke zalaczam ja ponownie klikam na ten link to zamiast automatycznie mnie przeniesc juz do wskazanego url pisz
Witaj (nazwa uzytkownika )


jak tutaj to wywolac ten nasz magiczny url z ostatniej sesji?
Kod
echo "Witam, ".$_SESSION['uzytkownik'];



Dobra juz sobie poradzilem z tym na pcozatku skryptu cza poprsotu dopisac takie cos smile.gif
Kod
session_set_cookie_params(10, '/test/');
session_start();
session_regenerate_id(true);


Rozwiazanie to pomaga logowac sie za kazdym razem smile.gif

Ten post edytował norfear 5.06.2012, 23:46:48
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 05:48