Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Sesja w logowaniu, Problem nie jest roziwązany
Raven1122
post
Post #1





Grupa: Zarejestrowani
Postów: 369
Pomógł: 2
Dołączył: 1.11.2010

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


Dobra, rozwiazalem juz moj problem, lecz teraz nastapil drugi ^^
Otóż po zalogowaniu gdy odświeżę strone wylogowywuje mnie. Dlaczego?
Kod:
  1. <?php
  2. if(isset($_POST['login']) && isset($_POST['pass'])){
  3. $login = trim($_POST['login']);
  4. $password = trim($_POST['pass']);
  5.  
  6. @mysql_connect('lxxx', 'xxx', 'xxx') or die(mysql_error());
  7.  
  8.  
  9. if($login != '' && $pass != ''){
  10. }
  11. else {
  12. echo("Uzupelnij wszystkie pola");
  13. }
  14.  
  15. $sql = "SELECT password FROM emes_users WHERE username = '$login'";
  16. $query = mysql_query($sql) or die(mysql_error());
  17. $row = mysql_fetch_array($query);
  18.  
  19. if($pass == $row['password']){
  20. $_SESION['auth'] = 1;
  21.  
  22. }
  23.  
  24.  
  25. else {
  26. $_SESSION['auth'] = 0;
  27. exit();
  28. }
  29. }
  30. else {
  31. echo("Niepowodzenie");
  32. exit();
  33. }
  34. if($_SESSION['auth'] = 1){
  35. ?>


Odzwiezam

ktos pomoze?

Ten post edytował Raven1122 7.01.2012, 21:50:11
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
plej
post
Post #2





Grupa: Zarejestrowani
Postów: 264
Pomógł: 11
Dołączył: 9.05.2011
Skąd: Gdańsk

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


może daj session_start(); na poczatku skryptu a cie nie wyloguje : ))
Go to the top of the page
+Quote Post
gorden
post
Post #3





Grupa: Zarejestrowani
Postów: 486
Pomógł: 101
Dołączył: 27.06.2010

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


1. Twój kod narażony na sql injection, użyj mysql_real_escape_string
2. linijki 10-14, użyj empty a nie taki bullshit
3. session_start użyj na początku pliku zaraz po <?php
4. linijki 28-29 nie deklaruj sesji zastąp to czymś w stylu exit('Zły login lub hasło')
5. linijka 36, = to nie jest operator porówniania, raczę o tym przeczytać
6. radziłbym zrobić config i require'ować go na początku plików, które korzystają z baz danych

w jednym z tych punktów kryje się rozwiązanie Twojego problemu, radze poczytać o:
-sesjach
-operatorach
-funkcjach baz danych
Go to the top of the page
+Quote Post
Raven1122
post
Post #4





Grupa: Zarejestrowani
Postów: 369
Pomógł: 2
Dołączył: 1.11.2010

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


zrobilem session_start na poczatku i dalej wylogowywuje ;/
Go to the top of the page
+Quote Post
john_doe
post
Post #5





Grupa: Zarejestrowani
Postów: 873
Pomógł: 25
Dołączył: 24.07.2005

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


tam gdzieś masz coś takiego (IMG:style_emoticons/default/smile.gif)

  1. $_SESION['auth'] = 1;


literówka
Go to the top of the page
+Quote Post
Raven1122
post
Post #6





Grupa: Zarejestrowani
Postów: 369
Pomógł: 2
Dołączył: 1.11.2010

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


Jeszcze mam takie pytanie. Co tutaj jest zle?:
  1. $question = mysql_real_escape_string(htmlspecialchars($_POST['question']));

bo przez to skrypt pokazuje mi tkai komunikat:
  1. Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'xxx'@'localhost' (using password: NO) in /home/xxx/public_html/php/ask.php on line 3
  2.  
  3. Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/emes/public_html/php/ask.php on line 3
  4. Podaj pytanie


No i tu caly kod:
  1. <?php
  2. if(isset($_POST['question'])){
  3. $question = mysql_real_escape_string(htmlspecialchars($_POST['question']));
  4. if($question != ''){
  5. include("../functions.php");
  6. connect();
  7.  
  8. $sql = "INSERT INTO xxx(id, title, answer, name)
  9. VALUES (0, '$question', 'Pytanie oczekuje na odpowiedź', '$question')";
  10.  
  11. $query = mysql_query($sql) or die("Nie udało sie dodać pytania");
  12.  
  13. header("Location:http://xxx/faq.php");
  14. }
  15. else{
  16. echo("Podaj pytanie");
  17. }
  18. }
  19.  
  20. else {
  21. echo("Nie udaolo się dodać pytania");
  22. }
  23. ?>


odswiezam
Go to the top of the page
+Quote Post
gorden
post
Post #7





Grupa: Zarejestrowani
Postów: 486
Pomógł: 101
Dołączył: 27.06.2010

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


najpierw połącz się z bazą danych może? mówiłem, zaraz po rozpoczęciu kodu zadeklaruj sesję i zaincluduj configa, wywołaj też te funkcje connect
Go to the top of the page
+Quote Post
Raven1122
post
Post #8





Grupa: Zarejestrowani
Postów: 369
Pomógł: 2
Dołączył: 1.11.2010

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


dzieki za pomoc (IMG:style_emoticons/default/smile.gif)

gorden jeszcze co do tych pktow to:

  1. <?php
  2. if(isset($_POST['login']) && isset($_POST['pass'])){
  3. include("../functions.php");
  4. connect();
  5. $login = mysql_real_escape_string($_POST['login']);
  6. $password = mysql_real_escape_string($_POST['pass']);
  7.  
  8. if(!empty($login) && !empty($password)){
  9. }
  10. else {
  11. echo("Uzupelnij wszystkie pola");
  12. }
  13.  
  14. $sql = "SELECT password FROM emes_users WHERE username = '$login'";
  15. $query = mysql_query($sql) or die(mysql_error());
  16. $row = mysql_fetch_array($query);
  17.  
  18. if($pass == $row['password']){
  19. $_SESION['auth'] = 1;
  20.  
  21. }
  22.  
  23.  
  24. else {
  25. exit('Zły Login lub Hasło');
  26. }
  27. }
  28. else {
  29. echo("Niepowodzenie");
  30. exit();
  31. }
  32. if($_SESSION['auth'] == 1){
  33. ?>


I po otworzeniu tego plik jest:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/emes/public_html/admin/board.php:1) in /home/emes/public_html/admin/board.php on line 2
Niepowodzenie

Tylko ze nie widze tam nigdzie zadnego znaku html itd.

z session start juz rozwiazane, ale wykonalem wszystkie pkt co mowiles i dalej nie dziala ;/ po odswiezeniu samo wylogowywuje
Go to the top of the page
+Quote Post
gorden
post
Post #9





Grupa: Zarejestrowani
Postów: 486
Pomógł: 101
Dołączył: 27.06.2010

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


linia 20, usuń session_start
linia 21, masz literówkę SESION zamiast SESSION

polecam Ci print_r oraz var_dump do tego typu problemów.
Go to the top of the page
+Quote Post
Raven1122
post
Post #10





Grupa: Zarejestrowani
Postów: 369
Pomógł: 2
Dołączył: 1.11.2010

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


zaraz mnie trafi (IMG:style_emoticons/default/haha.gif) mam juz wszystko:
  1. <?php
  2. if(isset($_SESSION['auth'])){
  3. include("../functions.php");
  4. connect();
  5. $login = mysql_real_escape_string($_POST['login']);
  6. $password = mysql_real_escape_string($_POST['pass']);
  7. if(empty($login) && empty($password)){
  8. exit("Uzupełnij wszystkie pola");
  9. }
  10.  
  11. else{
  12. $sql = "SELECT password FROM emes_users WHERE username = '$login'";
  13. $query = mysql_query('$sql') or die("Nie można odnależć danych");
  14. $row = mysql_fetch_array('$query');
  15. }
  16.  
  17. if($password == $row['password']){
  18. $_SESSION['auth'] = 1;
  19. }
  20. else {
  21. exit("Podano złe hasło lub login");
  22. }
  23. }
  24. if($_SESSION['auth'] == 1){
  25. ?>

a dalej po odswiezeniu wylogowywuje ;/
Go to the top of the page
+Quote Post
gorden
post
Post #11





Grupa: Zarejestrowani
Postów: 486
Pomógł: 101
Dołączył: 27.06.2010

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


banalne rozwiązanie. zobacz na warunek w linii 3. sprawdzasz czy istnieje sesja przed jej zainicjowaniem. dodaj za linią 19 jakieś echo z informacją o zalogowaniu, a zobaczysz, że się nie wyświetli. zamiast session w warunku daj coś z post

ps. linia 8, nie && tylko ||
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.09.2025 - 20:10