Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> PHP - IF - FORM
Nidan23
post 1.05.2019, 19:16:42
Post #1





Grupa: Zarejestrowani
Postów: 101
Pomógł: 2
Dołączył: 26.04.2019

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


Chciałbym zrobić takie cudo, że przycisk "wyloguj" pojawi się dopiero wtedy gdy się zalogujemy. Kod obecny wklejam poniżej:

  1. <?php
  2. if(unset($_SESSION['zalogowany'])) {
  3. echo file_get_contents('API/dot.php');
  4. }
  5. ?>


Jeżeli wiecie jak załączyć formularz do kodu php, to chętnie skorzystam, mi coś nie styka.
Go to the top of the page
+Quote Post
adbacz
post 1.05.2019, 20:01:41
Post #2





Grupa: Zarejestrowani
Postów: 532
Pomógł: 24
Dołączył: 15.04.2011
Skąd: Kalisz

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


Jeśli już, to takie coś smile.gif

  1. <?php
  2. if(unset($_SESSION['zalogowany'])) {
  3. include 'API/dot.php';
  4. }
  5. ?>
Go to the top of the page
+Quote Post
Nidan23
post 1.05.2019, 20:57:33
Post #3





Grupa: Zarejestrowani
Postów: 101
Pomógł: 2
Dołączył: 26.04.2019

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


Zrobiłem i nie działa ://///////////

Ten post edytował Nidan23 1.05.2019, 22:32:42
Go to the top of the page
+Quote Post
viking
post 2.05.2019, 07:11:51
Post #4





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


A dlaczego miało by działać?
Kod
unset ( mixed $var [, mixed $... ] ) : void

Funkcja unset nic nie zwraca. Zobacz isset.


--------------------
Go to the top of the page
+Quote Post
adbacz
post 2.05.2019, 07:13:10
Post #5





Grupa: Zarejestrowani
Postów: 532
Pomógł: 24
Dołączył: 15.04.2011
Skąd: Kalisz

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


No tak, fakt. unset() usuwa zmienną/indeks, dlatego if() nie działa - nie zauważyłem. Spróbuj tak:

  1. <?php
  2. if(isset($_SESSION['zalogowany'])) {
  3. include 'API/dot.php';
  4. }
  5. ?>
Go to the top of the page
+Quote Post
Nidan23
post 2.05.2019, 13:21:26
Post #6





Grupa: Zarejestrowani
Postów: 101
Pomógł: 2
Dołączył: 26.04.2019

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


Zrobiłem jak mówiłeś, nic...

  1. <?php
  2. if(!isset($_SESSION['zalogowany'])) {
  3. include 'API/dot.php';
  4. ?>


Kod dot.php

  1. <form method="POST" action="wylog.php">
  2. <input class="pz" type="submit" value="wyloguj" name="wyloguj">
  3. </form>
Go to the top of the page
+Quote Post
viking
post 2.05.2019, 14:48:32
Post #7





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


A gdzie niby w tym kodzie jest session_start? Php to nie wróżka.


--------------------
Go to the top of the page
+Quote Post
Nidan23
post 2.05.2019, 18:43:24
Post #8





Grupa: Zarejestrowani
Postów: 101
Pomógł: 2
Dołączył: 26.04.2019

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


Session start jest powyżej, razem z session register...

  1. <?php echo file_get_contents('config.php');
  2. session_register("zalogowany");
  3. ?>
Go to the top of the page
+Quote Post
viking
post 3.05.2019, 04:50:50
Post #9





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


Aha. I błędy też są ale je ukrywasz. Start sesji ma być umieszczony przed treścią wysłaną do przeglądarki.


--------------------
Go to the top of the page
+Quote Post
Nidan23
post 3.05.2019, 11:00:57
Post #10





Grupa: Zarejestrowani
Postów: 101
Pomógł: 2
Dołączył: 26.04.2019

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


Są błędy, ale je ukrywam? Nie widzę sensu, jak jest błąd to wolę go naprawić niż ukryć, dziwne masz podejście kolego...
Po prostu ja ich nie widzę, a nikt w internetach, w sprawdzonych zródłach o tym nie mówi, a sesja działa, jestem na każdej podstronie zalogowany - sprawdzone dzięki skryptowi wylogowania...

Ten post edytował Nidan23 3.05.2019, 11:02:20
Go to the top of the page
+Quote Post
viking
post 3.05.2019, 11:30:16
Post #11





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


Skoro jesteś taki pewny to założysz się o 1000 cebulionów że nie ma żadnego warninga w kodzie
  1. <?php
  2. echo 'x';


Wklej sobie nawet tutaj https://wtools.io/php-sandbox jak nie wierzysz.

Ten post edytował viking 3.05.2019, 11:30:52


--------------------
Go to the top of the page
+Quote Post
dublinka
post 3.05.2019, 12:30:15
Post #12





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

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


Podaje Ci przykład jak można to zrobić.

  1. <?php
  2.  
  3. $Log = 'asd'; // dane do zalogowania login
  4. $Pwd = 'pwd'; // dane do zalogowania Hasło
  5.  
  6. if(!function_exists('LogIn'))
  7. {
  8.  
  9. function LogIn($ArgObj1)
  10. {
  11.  
  12. $ArgObj1 = "<form method=\"POST\" action=" . $_SERVER['SCRIPT_NAME'] . "?step=1>";
  13. $ArgObj1 .= "login: <input type=\"text\" name=\"LoginName\">";
  14. $ArgObj1 .= "Hasło: <input type=\"text\" name=\"PasswordName\">";
  15. $ArgObj1 .= "<input type=\"submit\" value=\"Loguj sie\" name=\"input\">";
  16. $ArgObj1 .= "</form>";
  17.  
  18. return $ArgObj1;
  19.  
  20. }
  21.  
  22. }
  23.  
  24. if(!function_exists('ShowLogOutLinkAndDetails'))
  25. {
  26.  
  27. function ShowLogOutLinkAndDetails($Arg2, $sess)
  28. {
  29.  
  30. $Arg2 = "Witaj: " . $_SESSION['login'];
  31. $Arg2 .= "<br>";
  32. $Arg2 .= "<a href=" . $_SERVER['SCRIPT_NAME'] . "?step=2>Wyloguj</a>";
  33.  
  34. return $Arg2;
  35.  
  36. }
  37.  
  38. }
  39.  
  40.  
  41.  
  42. @$step = $_GET['step'];
  43.  
  44. (!isset($step)) ? $step = 0 : $step = $step;
  45.  
  46. switch($step):
  47.  
  48. case('0'):
  49.  
  50. if(isset($_SESSION['reg']))
  51. {
  52.  
  53. print ShowLogOutLinkAndDetails($Arg2 = true, $_SESSION['login']);
  54.  
  55.  
  56. } else {
  57.  
  58. echo LogIn($ArgObj1 = true);
  59.  
  60. }
  61.  
  62. break;
  63.  
  64. case('1'):
  65.  
  66. $submit = $_POST['input'];
  67. $LoginName = $_POST['LoginName'];
  68. $PasswordName = $_POST['PasswordName'];
  69.  
  70. if(isset($_SESSION['reg']))
  71. {
  72.  
  73. print ShowLogOutLinkAndDetails($Arg2 = true, $_SESSION['login']);
  74.  
  75.  
  76. } else {
  77.  
  78.  
  79. if($submit)
  80. {
  81.  
  82. if(($LoginName == $Log) && ($PasswordName == $Pwd))
  83. {
  84.  
  85. if ($_SERVER['REQUEST_METHOD'] === 'POST')
  86. {
  87.  
  88.  
  89. if(session_status() == PHP_SESSION_ACTIVE)
  90. {
  91.  
  92. $_SESSION['login'] = $LoginName;
  93. $_SESSION['pass'] = $PasswordName;
  94. $_SESSION['reg'] = 'ok';
  95.  
  96. header('location:' . $_SERVER['SCRIPT_NAME']);
  97.  
  98. }
  99.  
  100.  
  101. }
  102.  
  103.  
  104. } else {
  105.  
  106. exit("Dane są nieprawidłowe <a href=". $_SERVER['SCRIPT_NAME'] .">WSTECZ</a>"); // nigdy nie podawaj przyczyny bledu chyba ze to bedzie blad loginu czy hasla
  107. }
  108.  
  109. } else {
  110.  
  111. exit("error 001"); // nigdy nie podawaj przyczyny bledu ; error 001 jest jak nie zostaje wyslany formularz. Tu albo to albo od razu header bez cackania sie
  112.  
  113. }
  114. }
  115.  
  116. break;
  117.  
  118. case('2'):
  119.  
  120. unset($LoginName);
  121. unset($PasswordName);
  122. unset($reg);
  123. $_SESSION = array();
  124.  
  125. header('location:' . $_SERVER['SCRIPT_NAME']);
  126.  
  127. break;
  128.  
  129. default:
  130. header('location:' . $_SERVER['SCRIPT_NAME']);
  131.  
  132.  
  133. endswitch;
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148. ?>


Cytat(viking @ 3.05.2019, 12:30:16 ) *
Skoro jesteś taki pewny to założysz się o 1000 cebulionów że nie ma żadnego warninga w kodzie
  1. <?php
  2. echo 'x';


Wklej sobie nawet tutaj https://wtools.io/php-sandbox jak nie wierzysz.


no ofkoz ze wywali. Kolego autorze. Nie daje sie NIC przed wywolaniem sesji - nawet entera a Ty jedziesz z plikiem

Ten post edytował dublinka 3.05.2019, 12:31:38


--------------------
Go to the top of the page
+Quote Post
Nidan23
post 3.05.2019, 15:37:55
Post #13





Grupa: Zarejestrowani
Postów: 101
Pomógł: 2
Dołączył: 26.04.2019

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


Jakiś warning może będzie, ale chciałbym zauważyć, że jest to plik dołączany do każdej pod strony - także tej, która jest widoczna tylko dla osób zalogowanych i tam to śmiga. Więc jeżeli macie jakiekolwiek inny pomysł jak ukryć przycisk wylogowania, to chętnie przygarnę pomysł.
Go to the top of the page
+Quote Post
viking
post 3.05.2019, 15:49:29
Post #14





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


No to ja ci mówię jeszcze raz że nie ma prawa działać sesja z tym błędem. Pewnie masz zły kod który sprawdza czy dupa Maryny jest równa true albo przypisanie zamiast porównania i dlatego się jakiś if wykonuje.


--------------------
Go to the top of the page
+Quote Post
Nidan23
post 3.05.2019, 16:16:15
Post #15





Grupa: Zarejestrowani
Postów: 101
Pomógł: 2
Dołączył: 26.04.2019

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


Miałeś rację, co do sesji, ale to nie wyjaśnia, dlaczego nie mogę dać inputa i formularza jako echo.

Skąd wiem, że miałeś rację? Bo to działa:

  1. $kom = "";
  2. if(!isSet($_SESSION['zalogowany'])){
  3. $_SESSION['komunikat'] = "Nie jesteś zalogowany!";
  4. echo $_SESSION['komunikat'], "<br>";
  5. echo "<br>","Aby widzieć tę stronę musisz być zalogowany", "</font>", "</b>", "<br>", "</div>";
  6. echo file_get_contents('sklad/footer.php');
  7. exit();
  8. }
Go to the top of the page
+Quote Post
viking
post 3.05.2019, 16:29:54
Post #16





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


Teraz nie wiem o czym mówisz. Kod możesz wstawić dowolny o ile będzie za nagłówkami.


--------------------
Go to the top of the page
+Quote Post
Nidan23
post 3.05.2019, 16:36:19
Post #17





Grupa: Zarejestrowani
Postów: 101
Pomógł: 2
Dołączył: 26.04.2019

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


To mi coś nie styka, kod np. taki:

  1. if(!isSet($_SESSION['zalogowany'])){
  2. $_SESSION['komunikat'] = "Nie jesteś zalogowany!";
  3. echo "<form method="POST" action="wylog.php">
  4. <input class="pz" type="submit" value="wyloguj" name="wyloguj">
  5. </form>";
  6. }


I okazało się, że to przez określenia jak ja na to mówię, czyli "class", "method" etc., bo są w tych pierdolinikach "". Ale nie mam pojęcia jak to naprawić, więc dlatego powstał ten wątek.

Ten post edytował Nidan23 3.05.2019, 16:36:48
Go to the top of the page
+Quote Post
viking
post 3.05.2019, 16:39:04
Post #18





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


Wstawiasz \" albo odpowiednio odwrotnie '. Sugeruje czytanie dokumentacji.


--------------------
Go to the top of the page
+Quote Post
Nidan23
post 3.05.2019, 16:50:08
Post #19





Grupa: Zarejestrowani
Postów: 101
Pomógł: 2
Dołączył: 26.04.2019

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


Dobra, zrobiłem takie cudo:

  1. <?php
  2. if(!isSet($_SESSION['zalogowany'])){
  3. echo '<form method="POST" action="wylog.php">
  4. <input class="pz" type="submit" value="wyloguj" name="wyloguj">
  5. </form>'
  6. }
  7. ?>


Tylko problem jest taki, że przycisk nie wykonuje akcji/skryptu "wylog.php" i dalej jest na stronie nawet będąc wylogowanym.

EDIT, no tak session, czekaj.

EDIT2. Kod edytowałem, masz u góry poprawiony, żeby nie spamować. Nic się nie zmieniło, ani nie wykonuje skryptu, ani nie ukrywa go będąc wylogowanym.

EDIT3. Po dodaniu "exit();" a wcześniej po zakończeniu "echo" tym ";" wyświetla mi się przycisk i to:

  1. '; exit(); } ?>


Ten post edytował Nidan23 3.05.2019, 16:46:19
Go to the top of the page
+Quote Post
viking
post 3.05.2019, 17:00:28
Post #20





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


W tym kodzie wyżej po echo jest błąd skladniowy. Brakuje srednika. Zwracaj uwagi na błędy w końcu.


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 18.04.2024 - 06:46