Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Logowanie unexpected $end
Forum PHP.pl > Forum > Przedszkole
konradkw
Przy poniższym kodzie otrzymuję błąd:
  1. Parse error: syntax error, unexpected $end IN (xxxxxxxxxxxxxxxxxxxx)/zaloguj.php ON line 40


Czy widzicie czego brakuje? szukałem w kodzie ale wygląda na to że wszystko jest zamknieęte i nazwy się zgadzają sad.gif pewnie gdzieś średnika niema ale nie widzę gdzie..

  1. <?php
  2.  
  3. require ('polaczenie.php');
  4.  
  5. if(isset($_SESSION['zalogowany'])) {
  6. echo "Witam, ".$_SESSION['pseudonim'];
  7. }else{
  8.  
  9. if(isset($_POST['wyslij'])) {
  10.  
  11.  
  12. if(mysql_num_rows(mysql_query("SELECT pseudonim, haslo
  13. FROM rejestracja WHERE pseudonim = '".$_POST['pseudonim']."'
  14. && haslo = '".$_POST['haslo']."' ")) > 0) {
  15.  
  16.  
  17. if(mysql_num_rows(mysql_query("SELECT pseudonim FROM rejestracja
  18. WHERE pseudonim = '".$_POST['pseudonim']."'
  19. && haslo = '".$_POST['haslo']."' ")) > 0 ) {
  20.  
  21.  
  22. $_SESSION['zalogowany'] = true;
  23. $_SESSION['pseudonim'] = $_POST['pseudonim'];
  24. $_SESSION['haslo'] = $_POST['haslo'];
  25. echo "Jesteś zalogowany.";
  26.  
  27.  
  28. } else {
  29.  
  30. echo "Wpisałeś złe hasło, proszę spróbuj ponownie";
  31. }
  32. } else {
  33. echo "Wpisałeś złą nazwę użytkownika";
  34. }
  35. } else {
  36. require ('logowanie.php');
  37. }
  38.  
  39. ?>


.
red.orel
Klamry na końcu.

  1. <?php
  2.  
  3. require ('polaczenie.php');
  4.  
  5. if(isset($_SESSION['zalogowany'])) {
  6. echo "Witam, ".$_SESSION['pseudonim'];
  7. }else{
  8.  
  9. if(isset($_POST['wyslij'])) {
  10.  
  11.  
  12. if(mysql_num_rows(mysql_query("SELECT pseudonim, haslo
  13. FROM rejestracja WHERE pseudonim = '".$_POST['pseudonim']."'
  14. && haslo = '".$_POST['haslo']."' ")) > 0) {
  15.  
  16.  
  17. if(mysql_num_rows(mysql_query("SELECT pseudonim FROM rejestracja
  18. WHERE pseudonim = '".$_POST['pseudonim']."'
  19. && haslo = '".$_POST['haslo']."' ")) > 0 ) {
  20.  
  21.  
  22. $_SESSION['zalogowany'] = true;
  23. $_SESSION['pseudonim'] = $_POST['pseudonim'];
  24. $_SESSION['haslo'] = $_POST['haslo'];
  25. echo "Jesteś zalogowany.";
  26.  
  27.  
  28. } else {
  29.  
  30. echo "Wpisałeś złe hasło, proszę spróbuj ponownie";
  31. }
  32. } else {
  33. echo "Wpisałeś złą nazwę użytkownika";
  34. }
  35. } else {
  36. require ('logowanie.php');
  37. }
  38. }
  39.  
  40. ?>
konradkw
wszystko pięknie działa ale mam jeszcze pytanko.. Jak przesłać informację o sesji dalej - żeby na cokolwiek się kliknie żeby najpierw było sprawdzane czy zalogowany == true jako pierwsza instrukcja? czy muszę to w bazie umieszczać jako wartość czy coś?
jakos globalnie bym to musial uzyc .. ze zalozmy po zalogowaniu $zalogowany = 1 i potem kaśdy skrypt za początku sprawdza:

  1. if $zalogowany == 1 {zawartość strony;}
  2. else {
  3. echo "Musisz byc zalogowany aby oglądać tę stronę";
  4. require ('logowanie.php)
  5. }


Tylko problem w tym - jak zrobić z $zalogowany zmienną super globalną - żeby była dostępna dla każdego skryptu?



a może poprostu wystarczy na końcu skryptu z sesją wpisać:
  1. require ('index.php');


I wtedy wszystko sie bedzie dzialo na tej samej stronie?
bww
W skrypcie masz $_SESSION['zalogowany'] = true, a więc do momentu wygaśnięcia sesji możesz się do niej odwoływać np. if($_SESSION['zalogowany']) {}.
konradkw
ale gdzie jest ta informacja przechowywana? to ze sei sesja zaczeła? czy mogę określić jej długość? czy też musi być aktywna aż do wylogowania?

aha mam jeszcze niewielki problem z wylogowaniem się:

  1. <?php
  2. if(isset($_POST['wyloguj'])) {
  3. echo "Zostałeś wylogowany?";
  4. require ('logowanie.php');
  5. }
  6. ?>


zwraca mi:

Warning: Wrong parameter count for session_destroy() on line 3

ale mimo to wykonuje skrypt a przynajmniej czesc z niego bo się pokazuje "Zostałeś wylogowany"



Zapomniałem dodać że pomimo poprawnego działania skryptu - nie wyświetla błędów przy logowaniu to i tak zawsze kontynuuuje sesję pierwszego zalogowanego użytkownika - zakładam że to przez to że nigdy się poprawnie nie wylogował zgadza się (przez ten błąd wyżej) ?




to się też czasem pokazuje przy wylogowywaniu:


Warning: session_destroy() [function.session-destroy]: Trying to destroy uninitialized session
basstone
Po pierwsze Twój błąd wskazuje na to, że odwołujesz się do niezainicjowanej sesji.

A jeśli już chcesz usunąć to możesz to zrobić w inny sposób:

  1. $_SESSION = array();
konradkw
sesja równa się tablica? ale jaka tablica?



jeszcze jedno:

jak mam
  1. if(isset($_POST['wyloguj'])) {....}

to jak użyć submit w kodzie php nie zamykając ?> GUZIK SUBMIT "wyloguj się" <?php tylko jakoś go w php zagnieździć, próbowałem z echo i print i mam błąd ciągle ..
basstone
1. Tak, wrzucasz $_SESSION w array() i cała sesje się likwiduje smile.gif

2. Nie działa Ci ponieważ pewnie nie używasz backslashy, formularz włączony w kod php powinien wyglądać tak:
  1. echo "<form action=\"jakasstrona.php\" method=\"post\">";
  2. echo "<input type=\"submit\" value=\"Wyślij\">";
  3. echo "</form>";


Musisz pamiętać, że jeśli wciskasz kod html do kodu php to przed każdym cudzysłowiem musisz użyć znaku backslash \
konradkw
no przecież - takie proste rozwiązanie ..
  1. <?php
  2. if(isset($_POST['wyloguj'])) {
  3. $_SESSION = array();
  4. echo "Zostałeś wylogowany?";
  5. require ('logowanie.php');
  6. }
  7. ?>


tytaj mam coś jeszcze źle bo nie wyświetla tego:

  1. echo "Zostałeś wylogowany?";
  2. require ('logowanie.php');



basstone
A jesteś pewny, że spełniasz warunek funkcji? Pokaż mi jak wygląda formularz, którego używasz do wylogowania to będę mógł Ci coś więcej powiedzieć.
konradkw
no tak:
  1. echo "<form action=\"wyloguj.php\" method=\"post\"\>";
  2. echo "<input type=\"submit\" value\=\"Wyślij\>";
  3. echo "\<\/form\>";


Tylko żeby było śmieszniej to na przycisku pisze Prześlij zamiast Wyślij a ja Prześlij w ŻADNYM ze skryptów nie użyłem - jak to możliwe wogóle?

Juz widze błąd - nie było name

ale przycisk dalej jest dziwny ..

I nadaj wylogowanie nie kontynuuje tylko pustą stronę zwraca..
basstone
Tak, na przycisku pisze prześlij bo troszkę nagrzebałeś w tym kodzie smile.gif

Zrób tak, to jest kod formularza wciśnięty w kod php

  1. echo "<form action=\"wyloguj.php\" method=\"post\">";
  2. echo "<input type=\"hidden\" name=\"wyloguj\" value=\"1\">";
  3. echo "<input type=\"submit\" value=\"Wyloguj mnie\">";
  4. echo "</form>";


A to jest kod pliku wyloguj.php, który odbiera dane z formularza

  1. if($_POST['wyloguj'] == 1) {
  2. $_SESSION = array();
  3. echo "Zostałeś wylogowany!";
  4. require("logowanie.php");
  5. }
konradkw
NO NARESZCIE!! smile.gif już kilka godzin siedze nad całością i staram się sam wszystko napisać ale się dopiero uczę php więc zaczynam od w miarę prostych skryptów tylko że nie wszystkie błędy swoje jeszcze widzę smile.gif Bardzo dziękuję za pomoc.

Dlaczego się mi Prześlij pokazało zamiast tego co ja chciałem wcześniej?

Da się przejść do strony głównej zamiast zostawać na wyloguj.php? jest coś co automatycznie przeniesie mnie po wylogowaniu do index.php?
basstone
Twój kod:
  1. <input type=\"submit\" value\=\"Wyślij\>";


Za słowem Wyślij owszem wstawiłeś backslash, ale nie dałeś już cudzysłowia, dlatego pokazało Ci się domyślne Prześlij smile.gif Taka sama wartość pokazałaby Ci się gdybyś w ogóle nie ustawił value smile.gif


Co do drugiego pytania, takie przeniesienie najprościej będzie strzelić w js. Kod pliku wyloguj.php podmień na:

  1. if($_POST['wyloguj'] == 1) {
  2. $_SESSION = array();
  3. echo "<script> window.location = \"index.php\" </script>";
  4. }
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.