Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Logowanie i prziekierowanie do linku z bazy
Forum PHP.pl > Forum > Przedszkole
norfear
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
}
}
?>
konrados
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.
Wazniak96
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
norfear
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
konrados
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).
Niktoś
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.
norfear
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
Niktoś
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.
norfear
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
Niktoś
Żeby posługiwać się md5 podczas logowania ,to na stronie rejestracji hasło użytkownika także musisz zapisywać w md5.
konrados
@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. ?>
norfear
Ł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.
konrados
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
norfear
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
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.