Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Pytanie o funkcję
jaca121212
post 14.05.2019, 14:37:48
Post #1





Grupa: Zarejestrowani
Postów: 256
Pomógł: 16
Dołączył: 21.12.2014

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


Witam, może dość głupie pytanie ale "KTO PYTA NIE BŁĄDZI" a więc do rzeczy:
Pomyślałem czy można zrobić funkcję w PHP która by odpowiadała za sprawdzanie czy użytkownik jest zalogowany i ma dostęp do danej treści na stronie.
Jeżeli tak, czy dałoby się to zrobić w funkcji. Gdzie zamiast pisania na każdej stronie, podstronie dość długiego kodu, wystarczyłoby wywołać funkcję.
Przykład:
Na każdej stronie , podstronie ma zapisany taki kod
  1. <?
  2. if(isset($_SESSION['succes-user'])){
  3.  
  4. unset ($_SESSION['succes-user']);
  5. }
  6. if(isset($_SESSION['zalogowany']) && isset($_SESSION['zalogowany']) == true)
  7. {
  8.  
  9. header('Location: <a href="http://localhost/nowywyglad/news/app-layout/main.php&#39%3b%29;" target="_blank">http://localhost/nowywyglad/news/app-layout/main.php');</a>
  10. }
  11. ?>

gdzie zamiast takiego wyżej kodu można by było zapisać w ten sposób
  1. function name()
  2. {
  3. kod sprawdzający usera
  4. }
  5.  
  6. if(name()==true)
  7. {
  8. Treść dozwolona tylko dla zalogowanych
  9. }



Go to the top of the page
+Quote Post
Tomplus
post 14.05.2019, 15:52:38
Post #2





Grupa: Zarejestrowani
Postów: 1 834
Pomógł: 225
Dołączył: 20.03.2005
Skąd: Będzin

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


Na każdej stronie powinnien być kod

  1. require "plik_sprawdzajacy_czy_zalogowany.php";


a funkcja name() powinna się nazywać inaczej:

isLogged() i zwracać wartość true:false
getName() -> dopiero powinna zwracać nazwę użytkownika

wtedy if(isLogged()) { content }
Go to the top of the page
+Quote Post
jaca121212
post 14.05.2019, 17:35:16
Post #3





Grupa: Zarejestrowani
Postów: 256
Pomógł: 16
Dołączył: 21.12.2014

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


Chciałem to zrobić w ten sposób ale nie mogę tego ugryźć.
Kod
<?php
require('../true.php');
?>
<!Doctype>
<HTML lang="pl">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" type="text/css" href="../app-css/main.css">
</head>
<body>
<hrader>
    <nav>
    <ul>

         <li><a href="#">Profil <?php
        if(isLogin())
         {
             echo $_SESSION['user'];
         }
          else
           {
               echo "Gość";
           }
          ?></a></li>
        <li><a href="#">Ogłoszenia</a></li>
        <li><a href="#">Szukaj</a></li>
        <li><a href="http://localhost/nowywyglad/news/app-request/logout.php">Wyloguj się</a></li>
    </ul>
    </nav>
</hrader>

oraz osobny plik true.php
  1. <?php
  2. function isLogin()
  3. {
  4. if(isset($_SESSION['succes-user']))
  5. {
  6. unset ($_SESSION['succes-user']);
  7. }
  8. if(isset($_SESSION['zalogowany']) && isset($_SESSION['zalogowany']) == true)
  9. {
  10. echo"zalogowany";
  11. }
  12.  
  13. }
  14.  
  15.  
  16. ?>

Błędów nie ma żadnych wartość po zalogowaniu zwraca Zalogowany Gość po wylogowaniu zwraca samo Gość
Go to the top of the page
+Quote Post
Tomplus
post 14.05.2019, 17:43:01
Post #4





Grupa: Zarejestrowani
Postów: 1 834
Pomógł: 225
Dołączył: 20.03.2005
Skąd: Będzin

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


tak jak napisałem funckja isLogin() powinna zwracać albo true albo false, a nie `echo`


  1. function isLogin()
  2. {
  3. isset($_SESSION['succes-user']) ? unset ($_SESSION['succes-user']):null;
  4. if(isset($_SESSION['zalogowany']) && isset($_SESSION['zalogowany']) == true)
  5. {
  6. return true;
  7. }
  8. return false;
  9. }


Tzn. echo też może jak potrzebujesz prześledzić działanie funkcji.

W ogóle w takich miejscach krócej jest użyć coś takiego, bez żadnych ifów, klamerek

  1. <li><a href="#">Profil <?php echo isLogin() ? $_SESSION['user'] : "Gość"; ?></a></li>
Go to the top of the page
+Quote Post
jaca121212
post 14.05.2019, 17:47:03
Post #5





Grupa: Zarejestrowani
Postów: 256
Pomógł: 16
Dołączył: 21.12.2014

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


W tym zapytaniu mają być dwa pytajniki bo krzyczy mi błędem
  1. isset($_SESSION['succes-user']) questionmark.gif unset ($_SESSION['succes-user']):null;


Cytat
Parse error: syntax error, unexpected 'unset' (T_UNSET) in C:\xampp\htdocs\nowywyglad\news\true.php on line 5



Naprawiłem ten błąd dodając
Kod
session_unset

ale gdy zaloguje się to pojawia się kolejny błąd.
Cytat
Profil Warning : session_unset() expects exactly 0 parameters, 1 given in C:\xampp\htdocs\nowywyglad\news\true.php on line 5 aza121212


Ten post edytował jaca121212 14.05.2019, 17:54:30
Go to the top of the page
+Quote Post
Tomplus
post 14.05.2019, 17:57:27
Post #6





Grupa: Zarejestrowani
Postów: 1 834
Pomógł: 225
Dołączył: 20.03.2005
Skąd: Będzin

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


Gdzie ja użyłem dwa pytajniki?
Jest tylko jeden znak zapytania.

widzisz session_unset() to też rozwiązanie - manuela zawsze pomoże.


Jak masz wersję PHP7 to możesz użyć podwójny znak zapytania:

  1. $var = 10;
  2. echo $abc ?? $var ?? 20;


W powyższym przykładzie wynikiem będzie oczywiście 10.
Mimo zę nie ma zadeklarowanej zmiennej $abc, a jakby nie było $var to wynik byłby 20.
Go to the top of the page
+Quote Post
jaca121212
post 14.05.2019, 18:06:17
Post #7





Grupa: Zarejestrowani
Postów: 256
Pomógł: 16
Dołączył: 21.12.2014

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


A ten błąd co oznacza ?
Cytat
Profil Warning : session_unset() expects exactly 0 parameters, 1 given in C:\xampp\htdocs\nowywyglad\news\true.php on line 5 aza121212

I jak go naprawić ?
Go to the top of the page
+Quote Post
viking
post 14.05.2019, 18:11:30
Post #8





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

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


Przecież masz dokładnie napisane. Funkcja spodziewa się 0 parametrów a podajesz jej 1.


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

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: 20.04.2024 - 05:11