błedy @

0
  <?php
  @$role = $_SESSION['user_role'];
  @$id = $_SESSION['id'];
if (isset($_SESSION['zalogowany'])) {
    echo "<p>Witaj ".$_SESSION['user']. "! [ <a href='logout.php?id=$id'>Wyloguj się!</a> ]</p>";
  }else{
   echo '<a href="panel.php">Zaloguj się</a><br><br>';
  }

   if ((@$_SESSION['user_role'] === 'user') || (@$_SESSION['user_role'] === '')){
    echo '<a href="user_panel.php?user_role=$role">Wyśwetl panel użytkownika</a><br><br>';
   }
   elseif (@$_SESSION['user_role'] === 'admin')
{
  echo '<a href="index1.php?user_role=$role">Wyświetl panel admina</a><br><br>';
}

?>

Te funkcje spełniają żadany efekt ale tam gdzie mam małpy @ wywala mi błędy. Te małpki to podobno zły nawyk dla programisty, czy jest jakiś sposób aby ich uniknąć?

0

To nie błędy a ostrzeżenia. Najlepiej przeczytaj co mówią i googluj ;]
A jednym z możliwych powodów, strzelam w ciemno, jest niezainicjalizowana sesja.

0

prawda ale jak ją zainicjować?

0

Chodzi Ci o session_start() ???

1
Wrzód napisał(a):

prawda ale jak ją zainicjować?

Możesz sprawdzić czy dana zmienna sesyjna istnieje za pomocą isset. If(isset(sesja)) to przypisz ja do zmiennej.
Jeżeli używasz php od 7 wersji wzwyż to możesz zrobić coś takiego.
$id = $_SESSION['id'] ?? null; zamiast null możesz użyć czegokolwiek co będzie przypisane do zmiennej id jeżeli zmienna sesyjna nie będzie istniała.

0

sesje istnieją, sprawdziłem ale tylko wtedy jak się użytkownik zaloguje, a jak nie to wywala ostrzeżenia, czy tu nie trzeba użyć try i catch?

0

Nie, nie trzeba. Zwykłe isset() wystarczy

0

@Wrzód - nie musisz, bo PHP w takich wypadkach nie rzuca wyjątków. try-catch jest wykonywane tylko do obsługi wyjątków.
Metody w stylu isset() oraz emtpy() mają taką fajną cechę, że gdy użyjesz ich do zmiennych/elementów w tablicy, które nie istnieją, to nie będą rzucać żadnym komunikatem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1