Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]scrypt logowania IE vs FF i OPERA
Forum PHP.pl > Forum > Przedszkole
Ciubas
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
MacPain
Masz w nastepnym pliku takie cos:
  1. <?php session_start(); ?>
recces
Wklej takze plik logowania (w ktorym ustawiasz zmienne sesji).
Jesli chodzi o nielogowanie sie- wyczysc sesje lub przynajmniej usun cookies sesji z przegladarki.
Po tych paru linijkach kodu nie jestem wstanie znalesc twojego bledu z sesjami.
Ciubas
MacPain- to ten sam plik

recces - to jest caly plik, reszta jest po ifie caly form logowania:)

dodatkowo jest tylko spaw, ale on nie ma z tym nic wspolnego

zmienilem wszystko tak:

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


i teraz na FF i Opera dziala natomiast na IE nie:/
Ciubas
dziekuje za zainteresowanie, prosze zobaczyc moj przed ostatni post, tam jest to poprawione a co tyczy sie // i \ to forum samo to dodaje dlatego nie lubie uzywac [ php ]

i jest to o czym pisales: if ($_POST['logowanie']=='loguj'){$_SESSION['haslo']=$_POST['haslo'];};

problemem jest to ze teraz IE w ogole nie wchdzi dalej, caly czas prosi o haslo...
recces
Soory- chcialem przeedytowac swoj post (nie zauwazylem twoich poprawek ) i go usunalem niechcacy ....
Sprawdz czy IE ma wlaczona obsluge cookies ....
Ciubas
oczywiscie ze ma:)
erix
  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).
Ciubas
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
erix
Ups, przepraszam - nie zauważyłem, że wszystko w jednej linijce wcisnąłeś...

Coś w ogóle zawiera tablica?
  1. <?php
  2. var_dump($_SESSION);
  3. ?>
?
Ciubas
erix - niestety nie rozumiem pytania, jezeli chodzi czy cos wczesniej bylo do niej wrzucane to odp brzmi NIE, czy byla wywolywana wczesniej: tez nie;/

czy to nie jest wina tego forma do logowania?

moze ja poprostu cos ominalem:/

  1. <?php
  2. $pas='parodium';
  3. if ($_POST['haslo']==$pas){$_SESSION['haslo']=$_POST['haslo'];};
  4. if ($_GET['edycja']==""){$_GET['edycja']='strgl';};
  5. $edycja = $_GET['edycja'] . '.txt';
  6. if ($_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.  
  14.  
  15. <?php
  16.  
  17. if ($_POST['edytor_poszedl'] == "Zapisz zmiany") {
  18. $_POST['strona']=ereg_replace("","",$_POST['strona']);
  19. file_put_contents($edycja,$_POST['strona']);
  20. }
  21.  
  22. include("spaw2/spaw.inc.php"); 
  23. $content = file_get_contents($edycja);
  24. $spaw = new SpawEditor("strona", $content); 
  25. ?>
  26. <form action="panel.php?edycja=<?php echo $_GET['edycja'];?>" method="POST">
  27. <?php 
  28. $spaw->show(); 
  29. ?>
  30. <input type="submit" name="edytor_poszedl" value="Zapisz zmiany">
  31. </form>
  32. <br/>
  33. edytuj: <a href="panel.php?edycja=strgl"> strona główna </a>  <a href="panel.php?edycja=cennik"> cennik </a>
  34. <?php 
  35. }
  36. else
  37. { ?>
  38.  
  39. <form class="" action="panel.php" method="POST">
  40. <input type="password" name="haslo" />
  41. <input type="submit" name="logowanie" value="loguj" /> 
  42. </form>
  43. <br/>
  44. <br/>
  45. nowe zabezpieczenia zostaly zaimplementowane, system dziala na wszystkich przegl
    adarkach.
  46.  
  47.  
  48. <?php 
  49. };
  50. ?>
  51.  
  52.  
  53. </body>
  54. </html>


nie wiem czemu gdy porownywalem $_POST['logowanie']=='loguj' to zawsze IE zwracal ze to jest nieprawda i nie wchodzil do if, gdy jest tak jak teraz to wszystko smiga super

musiala to byc wina z formularzem i przekazaniem var loguj zmiennej logowanie, jezeli ktos potrafi powiedziec czemu tak sie dzieje, bede bardzo wdzieczny!
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.