Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Odsyłacz do własnego id
Croos22
post
Post #1





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

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


Witam.
W jaki sposób mogę zrobić aby wyciągnąć dane zalogowanego użytkownika na konkretną stronę.Chodzi mi o to gdy zostaną wpisane login oraz hasło przeniesie mnie na stronę którą podałem i właśnie na tej ów stronie chciałbym aby zalogowany użytkownik miał.
Najbardziej mi zależy na tym, że zalogowani zobaczą na stronie swoje id wraz z odsyłaczem na stronę z własnym kontem (np.strona.pl/user.php?id=1)

Próbowałem to zrobić tylko, że id stale wynosi 1.

  1. <?php
  2.  
  3. mysql_connect("", "", "")or die("Nie można nawiązać połączenia z bazą");
  4. mysql_select_db("")or die("Wystąpił błąd podczas wybierania bazy danych");
  5.  
  6. $query = mysql_query("SELECT * FROM `uzytkownicy` WHERE id");
  7. if($dane=mysql_fetch_array($query))
  8. {
  9. echo "<b>Nazwa użytkownika: &nbsp;&nbsp;</b>";
  10. echo "<a href="$dane['id']">id</a>;
  11.  
  12. }
  13. ?>
Go to the top of the page
+Quote Post
blahy
post
Post #2





Grupa: Zarejestrowani
Postów: 82
Pomógł: 22
Dołączył: 20.07.2010

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


wywolaj sobie w myadminie to zapytanie i zobacz czy wyniki sa takie jakbys chcial, albo print_r na $dane po zrobieniu tablicy z wynikami, bo chyba chcesz wybrac uzytkownika o okreslonym id (np po zalogowaniu loginem i haslem takiego ktory ma pole login takie jak podany login i haslo takie jak podane haslo) a nie wszystkich uzytkownikow
Go to the top of the page
+Quote Post
Croos22
post
Post #3





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

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


No tak, każdy nowy użytkownik dostaje swój unikalny identyfikator po zarejestrowaniu.Wyświetla mi to w ten sposób http://strona.pl/user.php?id=1 .Chciałem aby po zalogowaniu gdy przeniesie mnie header("Location: indeks.php"); w moim wypadku na indeks.php był odsyłacz o nazwie np.mój profil.Ten ów odsyłacz chciałbym aby po kliknięciu przekierował mnie na taką stronę co podałem u góry lecz z własnym identyfikatorem (id).

Ten post edytował Croos22 25.07.2010, 10:07:39
Go to the top of the page
+Quote Post
thomson89
post
Post #4





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

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


Na sam początek strony, dosłownie, pierwsza linijka:


Oraz potem, gdy sprawdzasz czy użytkownik istnieje (logujesz go):
  1. mysql_connect('xxx', 'xxx', 'xxx')or die('Nie można nawiązać połączenia z bazą');
  2. mysql_select_db('xxx')or die('Wystąpił błąd podczas wybierania bazy danych');
  3.  
  4. $query = mysql_query('SELECT * FROM `uzytkownicy` WHERE `login` =\''.$_POST['login'].'\' AND `haslo` = \''.sha1($_POST['haslo'].'\'');
  5. $result = mysql_num_rows($query);
  6. $results = mysql_fetch_assoc($query);
  7. if($result == 1)
  8. {
  9. echo "<b>Zalogowano</b>";
  10. $_SESSION['uzytkownik']['id'] = $results['id'];
  11. $_SESSION['uzytkownik']['login'] = $results['login'];
  12. }


Powyżej przykładowy kod logowania, oraz zapisanie w sesjach danych użytkownika. Potem, wystarczy na następnej stronie znowu dodać session_start(): i odczytać dane które zapisałeś.

I wystarczy dać, np. taki kod w PHP prowadzący do profilu:
  1. print '<a href="profiles.php?id='.$_SESSION['uzytkownik']['id'].'">Mój profil</a>'; ?>


Ten post edytował thomson89 25.07.2010, 10:44:44


--------------------
Sklep 70%
Go to the top of the page
+Quote Post
Croos22
post
Post #5





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

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


A mógłby mi ktoś pomóc przerobić to.Próbuje i próbuje tylko nic z tego nie wychodzi.
Logowanie:
  1. <?php include("config.php"); ?>
  2. <?php
  3. $login = $_POST['login'];
  4. $haslo = $_POST['haslo'];
  5. $haslo = addslashes($haslo);
  6. $login = addslashes($login);
  7. $login = htmlspecialchars($login);
  8.  
  9. if ($_GET['login'] != '') {
  10. }
  11. if ($_GET['haslo'] != '') {
  12. }
  13.  
  14. $haslo = md5($haslo);
  15. if (!$login OR empty($login)) {
  16. include("head2.php");
  17. echo '<p class="alert">Wypełnij pole z loginem!</p>';
  18. include("foot.php");
  19. }
  20. if (!$haslo OR empty($haslo)) {
  21. include("head2.php");
  22. echo '<p class="alert">Wypełnij pole z hasłem!</p>';
  23. include("foot.php");
  24. }
  25. $istnick = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM `uzytkownicy` WHERE `nick` = '$login' AND `haslo` = '$haslo'"));
  26. echo 'Logowanie nieudane. Sprawdź pisownię nicku oraz hasła.';
  27. } else {
  28.  
  29. $_SESSION['nick'] = $login;
  30. $_SESSION['haslo'] = $haslo;
  31.  
  32. header("Location: indeks.php");
  33. }
  34. ?>


Ten post edytował Croos22 25.07.2010, 12:09:50
Go to the top of the page
+Quote Post
evolucja
post
Post #6





Grupa: Zarejestrowani
Postów: 362
Pomógł: 27
Dołączył: 14.09.2009

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


To może tak?
  1. <?php
  2.  
  3. mysql_connect("", "", "")or die("Nie można nawiązać połączenia z bazą");
  4. mysql_select_db("")or die("Wystąpił błąd podczas wybierania bazy danych");
  5.  
  6. $query = mysql_query("SELECT * FROM `uzytkownicy` WHERE `nick` = '".$_SESSION['nick']."' AND `haslo` = '$_SESSION['haslo']'");
  7. if($dane=mysql_fetch_array($query))
  8. {
  9. echo "<b>Nazwa użytkownika: &nbsp;&nbsp;</b>";
  10. echo "<a href="$dane['id']">id</a>;
  11.  
  12. }
  13. ?>


--------------------
zmoderowano - waga i rozmiar
Go to the top of the page
+Quote Post
thomson89
post
Post #7





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

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


Wystarczy dodać, w odpowiednim miejscu mój kod.

  1. <?php
  2. session_start(); //to trzeba dodać
  3. include("config.php");
  4.  
  5. $login = $_POST['login'];
  6. $haslo = $_POST['haslo'];
  7. $haslo = addslashes($haslo);
  8. $login = addslashes($login);
  9. $login = htmlspecialchars($login);
  10.  
  11. if ($_GET['login'] != '') {
  12. }
  13. if ($_GET['haslo'] != '') {
  14. }
  15.  
  16. $haslo = md5($haslo);
  17. if (!$login OR empty($login)) {
  18. include("head2.php");
  19. echo '<p class="alert">Wypełnij pole z loginem!</p>';
  20. include("foot.php");
  21. }
  22. if (!$haslo OR empty($haslo)) {
  23. include("head2.php");
  24. echo '<p class="alert">Wypełnij pole z hasłem!</p>';
  25. include("foot.php");
  26. }
  27.  
  28. $query = mysql_query("SELECT * FROM `uzytkownicy` WHERE `nick` = '$login' AND `haslo` = '$haslo'");
  29. $result = mysql_num_rows($query);
  30. $results = mysql_fetch_assoc($query);
  31. if($result == 1)
  32. {
  33. echo "<b>Zalogowano</b>";
  34. $_SESSION['uzytkownik']['id'] = $results['id'];
  35. $_SESSION['uzytkownik']['login'] = $results['login'];
  36. header("Location: indeks.php");
  37. }
  38. else
  39. {
  40. echo 'Logowanie nieudane. Sprawdź pisownię nicku oraz hasła.';
  41. }
  42. ?>


Ten post edytował thomson89 25.07.2010, 12:17:46


--------------------
Sklep 70%
Go to the top of the page
+Quote Post
Croos22
post
Post #8





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

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


W chwili obecnej po wpisaniu loginu oraz hasła przenosi mnie na stronę indeks.php jest to strona dla zalogowanych użytkowników czy w niej też muszę coś teraz zmienić czy tak na prawdę nie zostałem zalogowany do strony a przeniosło mnie bez jakiego kolwiek sprawdzenia?

Kod index.php
  1. <?php include("config.php");
  2. $nick = $_SESSION['nick'];
  3. $haslo = $_SESSION['haslo'];
  4. if ((empty($nick)) AND (empty($haslo))) {
  5. echo '<br>Zarejestruj się lub zaloguj<br><a href="index.php">Strona Główna</a><br>';
  6. }
  7. $user = mysql_fetch_array(mysql_query("SELECT * FROM uzytkownicy WHERE `nick`='$nick' AND `haslo`='$haslo' LIMIT 1"));
  8. if (empty($user[id]) OR !isset($user[id])) {
  9. echo '<br>Nieprawidłowe logowanie.Spróbuj pomownie.<br>';
  10. }
  11. // tresc dla zalogowanego uzytkownika
  12. echo 'Witaj '.$user[nick].' zostałeś/aś pomyślnie zalogowany/a, tutaj umieść ukryta strone tylko dla zalogowanych';
  13. echo '<br><a href="wyloguj.php">Wyloguj mnie</a>';
  14. ?>


Ten post edytował Croos22 25.07.2010, 13:02:01
Go to the top of the page
+Quote Post
thomson89
post
Post #9





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

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


Musisz dodać session_start(); - pcozytaj wgl o sesjach. Oraz dopasować zmienne które pobierasz (linijka 1, 2) do tych które zapisujesz (mój skrypt linijka 38, 39).


--------------------
Sklep 70%
Go to the top of the page
+Quote Post
evolucja
post
Post #10





Grupa: Zarejestrowani
Postów: 362
Pomógł: 27
Dołączył: 14.09.2009

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


Cytat(thomson89 @ 25.07.2010, 14:03:20 ) *
Musisz dodać session_start(); - pcozytaj wgl o sesjach. Oraz dopasować zmienne które pobierasz (linijka 1, 2) do tych które zapisujesz (mój skrypt linijka 38, 39).

Jak byś nie zauważył, to on chce skorzystać z mojej propozycji, nie twojej winksmiley.jpg

W takim razie tylko dodajesz session_start() na początku.


--------------------
zmoderowano - waga i rozmiar
Go to the top of the page
+Quote Post
Croos22
post
Post #11





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

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


Coś nadal jest nie tak ponieważ nie idzie się zalogować.

Sami zobaczcie:
http://samisobie.unl.pl/strony_internetowe/rejestracja.php

login.php
  1. <?php
  2. session_start(); //to trzeba dodać
  3. include("config.php");
  4.  
  5. $login = $_POST['login'];
  6. $haslo = $_POST['haslo'];
  7. $haslo = addslashes($haslo);
  8. $login = addslashes($login);
  9. $login = htmlspecialchars($login);
  10.  
  11. if ($_GET['login'] != '') {
  12. }
  13. if ($_GET['haslo'] != '') {
  14. }
  15.  
  16. $haslo = md5($haslo);
  17. if (!$login OR empty($login)) {
  18. include("head2.php");
  19. echo '<p class="alert">Wypełnij pole z loginem!</p>';
  20. include("foot.php");
  21. }
  22. if (!$haslo OR empty($haslo)) {
  23. include("head2.php");
  24. echo '<p class="alert">Wypełnij pole z hasłem!</p>';
  25. include("foot.php");
  26. }
  27.  
  28. $query = mysql_query("SELECT * FROM `uzytkownicy` WHERE `nick` = '$login' AND `haslo` = '$haslo'");
  29. $result = mysql_num_rows($query);
  30. $results = mysql_fetch_assoc($query);
  31. if($result == 1)
  32. {
  33. echo "<b>Zalogowano</b>";
  34. $_SESSION['uzytkownik']['id'] = $results['id'];
  35. $_SESSION['uzytkownik']['login'] = $results['login'];
  36. header("Location: indeks.php");
  37. }
  38. else
  39. {
  40. echo 'Logowanie nieudane. Sprawdź pisownię nicku oraz hasła.';
  41. }
  42. ?>



index.php
  1. <?php session_start();
  2.  
  3. include("config.php");
  4. $_SESSION['uzytkownik']['id'] = $results['id'];
  5. $_SESSION['uzytkownik']['login'] = $results['login'];
  6. if ((empty($nick)) AND (empty($haslo))) {
  7. echo '<br>Zarejestruj się lub zaloguj<br><a href="index.php">Strona Główna</a><br>';
  8. }
  9. $user = mysql_fetch_array(mysql_query("SELECT * FROM uzytkownicy WHERE `nick`='$nick' AND `haslo`='$haslo' LIMIT 1"));
  10. if (empty($user[id]) OR !isset($user[id])) {
  11. echo '<br>Nieprawidłowe logowanie.Spróbuj pomownie.<br>';
  12. }
  13. // tresc dla zalogowanego uzytkownika
  14. echo 'Witaj '.$user[nick].' zostałeś/aś pomyślnie zalogowany/a, tutaj umieść ukryta strone tylko dla zalogowanych';
  15. echo '<br><a href="wyloguj.php">Wyloguj mnie</a>';
  16. ?>



Wydaje mi się, że błąd może znajdować się w indeksie 4 i 5 lini a w loginie.php 38 i 39.
Oto moja tabela wydaje mi się, że dane nie zgadzają się ze sobą w liniach których podałem wyżej.Mam rację?
  1. CREATE TABLE `uzytkownicy` (
  2. `id` INT( 11 ) NOT NULL AUTO_INCREMENT ,
  3. `nick` VARCHAR( 32 ) NOT NULL ,
  4. `haslo` VARCHAR( 40 ) NOT NULL ,
  5. `email` VARCHAR( 40 ) NOT NULL ,
  6. `ip` VARCHAR( 20 ) NOT NULL ,
  7. PRIMARY KEY ( `id` )
  8. );
Go to the top of the page
+Quote Post
dg2001
post
Post #12





Grupa: Zarejestrowani
Postów: 71
Pomógł: 12
Dołączył: 9.01.2008
Skąd: Olkusz

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


  1. $_SESSION['uzytkownik']['id'] = $results['id'];
  2. $_SESSION['uzytkownik']['login'] = $results['login'];


Tego w pliku indeks.php już nie musisz mieć gdyż te wartości został zapisane w sesji. Bardziej powinno tu chyba być:

  1. $id = $_SESSION['uzytkownik']['id'];
  2. $nick = $_SESSION['uzytkownik']['login'];


  1. if ((empty($nick)) AND (empty($haslo))) {
  2. echo '<br>Zarejestruj się lub zaloguj<br><a href="index.php">Strona Główna</a><br>';


Prawdopodobnie to cię nie pozwala logować, gdyż nigdzie nie masz zadeklarowanych zmiennych $nick i $ hasło. Po drugie jak już chcesz sprawdzić czy zalogował się prawidłowy user, to sprawdzaj to co jest w sesji z bazą. Po trzecie w sesji nie masz wartości Hasło! Wiec czy prawidłowy user się zalogował powinno się sprawdzić czy $_SESSION['uzytkownik']['login'] istnieje w bazie danych i czy są one identyczne.
Go to the top of the page
+Quote Post
thomson89
post
Post #13





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

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


Po pierwsze, na czas naprawy usuń headera.

Po drugie, powiedz czy dane się nie zgadzają czy wyświetla się komunikat
  1. echo 'Logowanie nieudane. Sprawdź pisownię nicku oraz hasła.';


Przenosi cię do strony indeks.php?

--EDIT:
login.php - to:
  1. $_SESSION['uzytkownik']['nick'] = $results['nick'];

zamień na:
  1. $_SESSION['uzytkownik']['nick'] = $results['nick'];


--EDIT2:

index popraw:
  1. <?php session_start();
  2.  
  3. include("config.php");
  4. $id = $_SESSION['uzytkownik']['id']; //tutaj zamieniłem przypisywanie - [rzypisywałeś puste zmienne do istniejących
  5. $nick = $_SESSION['uzytkownik']['nick']; //i tu to samo co wyżej
  6. if (empty($nick)) {
  7. echo '<br>Zarejestruj się lub zaloguj<br><a href="login.php">Strona Główna</a><br>'; //tu poprawiłem index na login
  8. }/*
  9. $user = mysql_fetch_array(mysql_query("SELECT * FROM uzytkownicy WHERE `nick`='$nick' AND `haslo`='$haslo' LIMIT 1"));
  10.   if (empty($user[id]) OR !isset($user[id])) {
  11. echo '<br>Nieprawidłowe logowanie.Spróbuj pomownie.<br>';
  12. exit;
  13. }*/
  14. //powyższy kod jest nie potrzebny, gdyż nie wiem czy zauważyłeś ale logowania dokonałeś już w pliku login
  15. // tresc dla zalogowanego uzytkownika
  16. echo 'Witaj '.$user[nick].' zostałeś/aś pomyślnie zalogowany/a, tutaj umieść ukryta strone tylko dla zalogowanych';
  17. echo '<br><a href="wyloguj.php">Wyloguj mnie</a>';
  18. ?>


Ten post edytował thomson89 25.07.2010, 15:03:55


--------------------
Sklep 70%
Go to the top of the page
+Quote Post
dg2001
post
Post #14





Grupa: Zarejestrowani
Postów: 71
Pomógł: 12
Dołączył: 9.01.2008
Skąd: Olkusz

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


Tu jest jeszcze błąd:
  1. echo 'Witaj '.$user[nick].' zostałeś/aś pomyślnie zalogowany/a, tutaj umieść ukryta strone tylko dla zalogowanych';
  2. echo '<br><a href="wyloguj.php">Wyloguj mnie</a>';


Powinno być:
  1. echo 'Witaj '.$nick.' zostałeś/aś pomyślnie zalogowany/a, tutaj umieść ukryta strone tylko dla zalogowanych';
  2. echo '<br><a href="wyloguj.php">Wyloguj mnie</a>';

Go to the top of the page
+Quote Post
Croos22
post
Post #15





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

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


Poprawiłem wszystko usunąłem header wyświetlał się komunikat, że jestem zalogowany lecz gdy go z powrotem przywróciłem pojawiał się komunikat z indeks.php informacja dla niezalogowanych.
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: 21.08.2025 - 07:52