Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Wyświetlenie nicku zalogowanej osoby
Forum PHP.pl > Forum > Przedszkole
Turson
Jestem w trakcie pisania prostej strony z funkcją logowania, rejestracji, dodawania wpisów do księgi gości, po zalogowaniu.

Index.php : http://wklej.org/id/498680/
Rejestracja.php : http://wklej.org/id/498681/

News.php
  1. <?php
  2. $nick = $_SESSION['login'];
  3. $_SESSION['login'] = $row['login'];
  4.  
  5. if($_GET["wyloguj"]=="tak"){$_SESSION["zalogowany"]=0;echo "Zostałeś wylogowany z serwisu";}
  6. if($_SESSION["zalogowany"]!=1){
  7. if(!empty($_POST["login"]) && !empty($_POST["haslo"])){
  8. if(mysql_num_rows(mysql_query("select * from users where user_login = '".htmlspecialchars($_POST["login"])."' AND user_haslo = '".htmlspecialchars($_POST["haslo"])."'"))){
  9. echo "Zalogowano poprawnie. <a href='index.php'>Przejdź na stronę główną</a>";
  10. echo '<hr size=1 width=100%><br><br>Witaj, nick - <b>' .$_POST["login"]. '</b>';
  11. $_SESSION["zalogowany"]=1;
  12.  
  13. }
  14. else echo ShowLogin("Podano złe dane!!!");
  15. }
  16. else ShowLogin();
  17. }
  18. else{
  19. Jestes zalogowany! / <a href=index.php?wyloguj=tak>Wyloguj się</a><br>
  20. Twój nick to <h1>'.$_SESSION['login'].'</h1>'?>
  21. <?php
  22. }
  23. ?>

Właśnie tutaj miałby się wyświetlić nick.

I dodanie wpisu do ksiegi gosci:
  1. <?PHP
  2. mysql_connect("localhost", "root", "")or die("Nie można nawiązać połączenia z bazą"); //połączenie z bazą danych
  3. mysql_select_db("login")or die("Wystąpił błąd podczas wybierania bazy danych");
  4. $wpis = ($_POST["wpis"]);
  5. $nick = $_SESSION['login'];
  6.  
  7.  
  8.  
  9. // dodajemy rekord do bazy
  10. $ins = @mysql_query("INSERT INTO ksiega SET wpis='$wpis', autor='$nick'");
  11.  
  12.  
  13. if($ins) echo "Komentarz zostal poprawnie dodany do ksiegi gosci.";
  14. else echo "Blad! Nie udalo sie :c";
  15. ?>
  16. <br><a href="index.php?id=ksiega">Powrot</a>

Dodatkowo jak widać starałem sie rowniez aby nick byl dodawany do bazy przy wpisie..
marius94
  1. echo $_SESSION['login']
?
albo jak juz przypisales do zmiennej $ nick to
  1. echo $nick
Turson
Nie daje to nic
Daiquiri
Po co Ci dwa razy session_start() w index.php? Gdzie masz przypisanie danych do $_SESSION['login'];?

W news masz chyba odwrotną kolejność:
$nick = $_SESSION['login'];
$_SESSION['login'] = $row['login'];
Turson
w index mam przypisanie $nick = $_SESSION['login'];
Daiquiri
Ok masz $nick = $_SESSION['login'], ale gdzie masz zdefiniowaną wartość $_SESSION['login']?
Turson
Dałem do news
$_SESSION['login'] = $row['login'];
$nick = $_SESSION['login'];

ale nie wiem czy o to chodzi ;/
Daiquiri
Ok, w takim układzie sprawdź czy echo $row['login']; wyświetli Ci cokolwiek.
Turson
W news.php? Jeśli tak, to nie wywala nic.
Daiquiri
Bo albo ja czegoś nie rozumiem albo Ty robisz tak:
  1. $_SESSION['login'] = $row['login']; // przypisujesz do $_SESSION['login'] wartość $row['login'] ale skoro $row['login'] jest pusty to masz również pusto w $_SESSION['login'];
  2. $nick = $_SESSION['login']; // teraz przypisujesz wartość pustego $_SESSION['login'] do $nick

Innymi słowy nigdzie nie masz wartości z loginem, czegoś co po echo $zmienna wyświetli Ci jakąś wartość.
Turson
Myślisz o przypisaniu POST z formularza pierw do zmiennej $nick a potem ze zmiennej SESSION?
Daiquiri
Tak, chociaż szczerze powiedziawszy zbyt dokładnie w Twój kod nie zerkałam. Jednak widzę, że wszystkie dotychczas omawiane zmienne masz puste, więc możesz przypisać odpowiednią wartość do $_SESSION['login'] zaraz po tym jak użytkownik zostanie poprawnie zalogowany czy zarejestrowany smile.gif.
Turson
Wyszedł mi kod
  1. <?php
  2. $nick = $_POST['login'];
  3. if($_GET["wyloguj"]=="tak"){$_SESSION["zalogowany"]=0;echo "Zostałeś wylogowany z serwisu";}
  4. if($_SESSION["zalogowany"]!=1){
  5. if(!empty($_POST["login"]) && !empty($_POST["haslo"])){
  6. if(mysql_num_rows(mysql_query("select * from users where user_login = '".htmlspecialchars($_POST["login"])."' AND user_haslo = '".htmlspecialchars($_POST["haslo"])."'"))){
  7. echo "Zalogowano poprawnie. <a href='index.php'>Przejdź na stronę główną</a>";
  8. echo '<hr size=1 width=100%><br><br>Witaj, nick - <b>' .$_POST["login"]. '</b>';
  9. $_SESSION["zalogowany"]=1;
  10. $nick = $_SESSION['login'];
  11.  
  12. }
  13. else echo ShowLogin("Podano złe dane!!!");
  14. }
  15. else ShowLogin();
  16. }
  17. else{
  18.  
  19. Jestes zalogowany! / <a href=index.php?wyloguj=tak>Wyloguj się</a><br>
  20. Twój nick to<h1>'; echo $_SESSION['login'] ?>
  21. <?php
  22. }
  23. ?>
  24.  

I dalej pusto niestety
emajl22
A zobacz co masz w $_POST['login']
Daiquiri
Ale zrób najpierw echo przed przypisaniem, żeby wiedzieć że w zmiennych coś się akurat znajduje.

$nick = $_SESSION['login']; teraz przypisujesz wartość $_SESSION['login'] do $nick...
Turson
Dokładnie nie czaje
  1. $nick = $_SESSION['login'];
  2.  
  3. }
  4. else echo ShowLogin("Podano złe dane!!!");
  5. }
  6. else ShowLogin();
  7. }
  8. else{
  9.  
  10. Jestes zalogowany! / <a href=index.php?wyloguj=tak>Wyloguj się</a><br>
  11. Twój nick to<h1>'; echo $_SESSION['login']
  12. $_SESSION['login'] = $nick

jesli tak to nie dziala
Parse error: syntax error, unexpected T_VARIABLE, expecting ',' or ';' in D:\Xampp\xampp\htdocs\php\news.php on line 23
Daiquiri
Forum to nie parser. Przecież nie masz średnika po echo $_SESSION['login'] i $_SESSION['login'] = $nick!

Mam wrażenie, że mylą Ci się strony przy przypisywaniu. Jeżeli $zmienna1 = "Ala" a $zmienna2 = "kot", to w przypadku gdy zrobimy : $zmienna1 = $zmienna2, po wyświetleniu echo $zmienna1 zobaczymy "kot".

To, co Ty musisz zrobić to znaleźć zmienną w której masz zapisany login, np. zaraz po wysłaniu formularza masz ją w $_POST['login'], jednak na innej stronie $_POST['login'] nie będzie miało tej wartości. Możesz rozpocząć sesję również w rejestracja.php i tam przypisać wartość $_POST do $_SESSION ($_SESSION['login'] == $_POST['login']).
Turson
Średnik i tak nie daje nic, bo nie wyświetla nicku w tej kompozycji
Daiquiri
Brak średnika powodował parse error, a za problemy z parserem zamykamy zwykle tematy.

Powtórzę się raz jeszcze jeżeli chcesz przypisać cokolwiek do $_SESSION['login'] korzystając z innej zmiennej np. $_SESSION['login'] = $zmienna, to musisz się upewnić, że $zmienna nie jest pusta.
Turson
Więc co $nick przypisuję $_POST['login'] // wtedy już $nick nie jest pusty bo jest przypisany nazwą loginu z formularza
następnie wg. zaleceń daję echo i na koniec do niepustego $nick przypisuję $_SESSION['login']
wychodzi
  1. $nick = $_POST['login'];
  2. echo 'bla bla, twoj nick to ' .$nick. '';
  3. $_SESSION['login'] = $nick

Jeśli dobrze rozumiem i robię to nic z tego nie wynika
Daiquiri
Brakuje Ci średnika na końcu. Jeżeli masz
  1. $nick = $_POST['login'];
  2. echo 'bla bla, twoj nick to ' .$nick. ''; // i tutaj wyświetla Ci się wartość zmiennej $nick
  3. $_SESSION['login'] = $nick;
  4. echo $_SESSION['login'];
Tylko pamiętaj, że przy każdym wywołaniu tej części kodu, zmienne będą się nadpisywać.

Zaczynam się gubić, gdzie Ty wyświetlasz ten $_SESSION['login'] i czy go po drodze nie nadpisujesz.
Turson
Tak cały news.php wyglada
  1. <?php
  2. if($_GET["wyloguj"]=="tak"){$_SESSION["zalogowany"]=0;echo "Zostałeś wylogowany z serwisu";}
  3. if($_SESSION["zalogowany"]!=1){
  4. if(!empty($_POST["login"]) && !empty($_POST["haslo"])){
  5. if(mysql_num_rows(mysql_query("select * from users where user_login = '".htmlspecialchars($_POST["login"])."' AND user_haslo = '".htmlspecialchars($_POST["haslo"])."'"))){
  6. echo "Zalogowano poprawnie. <a href='index.php'>Przejdź na stronę główną</a>";
  7. echo '<hr size=1 width=100%><br><br>Witaj, nick - <b>' .$_POST["login"]. '</b>';
  8. $_SESSION["zalogowany"]=1;
  9.  
  10.  
  11.  
  12. }
  13. else echo ShowLogin("Podano złe dane!!!");
  14. }
  15. else ShowLogin();
  16. }
  17. else{
  18. $nick = $_POST['login'];
  19. Jestes zalogowany! / <a href=index.php?wyloguj=tak>Wyloguj się</a><br>
  20. Twój nick to<h1>';
  21. $_SESSION['login'] = $nick;
  22. echo $_SESSION['login']; ?>
  23. <?php
  24. }
  25. ?>

niby $_SESSION['login'] występuje jako tako raz
Daiquiri
Dodaj: $_SESSION['login'] = $_POST['login'] pod: $_SESSION["zalogowany"]=1; i wywal wszystkie $_SESSION['login'] = $nick;
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.