Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]scrypt logowania IE vs FF i OPERA, nie wchodzi do petli, blad przekazania formularza, ale jaki?
Ciubas
post
Post #1





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 14.09.2003
Skąd: K-ce

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


plik panel.php:

  1. <?php
  2. if ($_POST['logowanie']!=='loguj' || $_POST['logowanie']=='loguj'){$_SESSION['haslo']=$_POST['haslo'];};
  3. $pas='test';
  4. if ($_GET['edycja']==""){$_GET['edycja']='strgl';};
  5. $edycja = $_GET['edycja'] . '.txt';
  6. if ($_SESSION['haslo']!==$pas || $_SESSION['haslo']==$pas){
  7. ?>
  8. <html>
  9. <head>
  10. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2" />
  11. </head>
  12. <body>
  13. <?php
  14.  
  15. if ($_POST['edytor_poszedl'] == "Zapisz zmiany") {
  16. $_POST['strona']=ereg_replace("","",$_POST['strona']);
  17. file_put_contents($edycja,$_POST['strona']);
  18. }
  19.  
  20. include("spaw2/spaw.inc.php"); 
  21. $content = file_get_contents($edycja);
  22. $spaw = new SpawEditor("strona", $content); 
  23. ?>
  24. <form class="" action="panel.php?edycja=<?php echo $_GET['edycja'];?>" method="POST">
  25.  
  26. <?php 
  27. $spaw->show(); 
  28. ?>
  29. <input type="submit" name="edytor_poszedl" value="Zapisz zmiany">
  30. </form>
  31. <br/>
  32. edytuj: <a href="panel.php?edycja=strgl"> strona główna </a> <a href="panel.php?edycja=cennik"> cennik </a>
  33. <?php 
  34. }
  35. else
  36. { ?>
  37. <form class="" action="panel.php" method="POST">
  38. <input type="password" name="haslo">
  39. <input type="submit" name="logowanie" value="loguj"> 
  40. </form>
  41. <?php 
  42. };
  43. ?>
  44.  
  45. </body>
  46. </html>


problem:
po przejsciu na inna zakladke tzn edycje inne pliku linkiem: <a href="panel.php?edycja=cennik"> cennik
zmienna $_SESSION['haslo'] jest pusta, zero. jak zmienialem ten scrypt to w ogole albo IE albo FF wraz z OPERA sie nie chcialy logowac i tak na zmiane.

w tej chwili nie pyta nawet o logowanie, wchodzi od razu tak jak byl zalogowany mimo ze post i session sa puste, juz nic nie rozumiem:/

plik w ktorym to jest to panel.php - ten sam gdzie inda wszystkie formy

blad moim zdaniem tkwi tutaj:

$_POST['logowanie']!=='loguj' || $_POST['logowanie']=='loguj' gdy jest bez !== nie dziala, gdy jest == dziala tylko na IE lub w ogole:/


-------------------------
tak chyba jest lepiej
te kawałki html'a nie będą przeszkadzały
większość kodu to PHP więc całość należało
umieścić w BBCode [ php ]
~Cienki1980

bede juz pamietac, dziekuje!
~ciubas


Ten post edytował Ciubas 22.03.2007, 16:30:59
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




  1. <?php
  2. if ($_POST['logowanie']=='loguj'){$_SESSION['haslo']=$_POST['haslo'];};
  3. $pas='test';
  4. ?>

Za każdym razem wysyłasz dane z formularza logowania?
Wydaje mi się, że nie więc dlaczego za każdym razem sprawdzasz, jakie hasło zostało wpisane?

Ten kawałek kodu działa tylko, gdy jest logowanie, ok. Ale ustaw
  1. <?php
  2. $_SESSION['pas'] = 'test';
  3. ?>

i sprawdzaj potem
  1. <?php
  2. //zamiast: if ($_SESSION['haslo']!==$pas || $_SESSION['haslo']==$pas){
  3. if(!empty($_SESSION['pas'])){
  4. ?>

Bazujesz się na zmiennej, która po prostu nie istnieje w dalszych skryptach ($pas - ustawiana jest tylko przy logowaniu, bo nie odwołujesz się poprzez formularz).

Mój przykład oczywiście był najprostszy, ale nie znaczy, że nie jest w miarę bezpieczny (wyłączam tu przypadki przechwycenia SID-a albo manipulację w plikach sesji).

Ten post edytował erix 22.03.2007, 15:11:27
Go to the top of the page
+Quote Post
Ciubas
post
Post #3





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 14.09.2003
Skąd: K-ce

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


Cytat(erix @ 22.03.2007, 17:09:46 ) *
  1. <?php
  2. if ($_POST['logowanie']=='loguj'){$_SESSION['haslo']=$_POST['haslo'];};
  3. $pas='test';
  4. ?>

Za każdym razem wysyłasz dane z formularza logowania?
Wydaje mi się, że nie więc dlaczego za każdym razem sprawdzasz, jakie hasło zostało wpisane?

nie za kazdym razem, to tylko sprawdza czy wlasnie ktos sie loguje, czy juz byl zalogowany, jak byl to to omija, jak nie byl to sprawdza czy wpisal dobre haslo

Ten kawałek kodu działa tylko, gdy jest logowanie, ok. Ale ustaw
  1. <?php
  2. $_SESSION['pas'] = 'test';
  3. ?>

i sprawdzaj potem
  1. <?php
  2. //zamiast: if ($_SESSION['haslo']!==$pas || $_SESSION['haslo']==$pas){
  3. if(!empty($_SESSION['pas'])){
  4. ?>

Bazujesz się na zmiennej, która po prostu nie istnieje w dalszych skryptach ($pas - ustawiana jest tylko przy logowaniu, bo nie odwołujesz się poprzez formularz logowania).

wcale nie, tej if konczy sie znacznie wczesniej, w tej samej linijce, ten pass zawsze jest taki sam

Mój przykład oczywiście był najprostszy, ale nie znaczy, że nie jest w miarę bezpieczny (wyłączam tu przypadki przechwycenia SID-a albo manipulację w plikach sesji).

to jest nieistotne, bo problem dotyczy czego innego, dlaczego IE nie wchodzi do if a FF i OPERA tak...


o co mi chodzi i co sie dzieje: http://ciubas.pl/panel.php haslo test

Ten post edytował Ciubas 22.03.2007, 15:28:51
Go to the top of the page
+Quote Post

Posty w temacie


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: 8.10.2025 - 03:08