Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][mysql] Problem z działaniem funkcji, Napisałem taką fukcje.
Jaro82
post 18.05.2006, 16:13:30
Post #1





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 9.01.2006
Skąd: Polska Południowa

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


Mam taką funcyjke:
  1. <?php
  2. function sprawdz_kto_to()
  3. //sprawdza typ uzytownika według instniejącego loginu
  4. //przekierowywuje na odpowiednie strony w zależności od typ`u
  5. {
  6.   $lacz = lacz_bd();
  7.   if($wynik = $lacz->query("select typ from uzytkownik
  8.                                where login = '$login'")){
  9.      $wiersz = $wynik->fetch_array();
  10.      $typ = $wiersz[0];
  11.      $wynik->close();
  12.        if ($typ=="pacjent" || !$typ) echo "<TD class=menu width=132 align=center><a href=\"rejestracja.php\"><b>REJESTRACJA</b></a>";
  13.        else echo "<TD class=menu width=132 align=center><b>REJESTRACJA</b>";
  14.        ?><td>
  15.        <td class=menu width=131 align=center><?php
  16.        if ($typ=="admin") echo "&nbsp; <a href=\"admin.php\"><b>ADMINISTRATOR</b></a>";
  17.        if ($typ=="pacjent") echo "<a href=\"pacjent.php\"><b>PACJENT</b></a>";
  18.        if ($typ=="lekarz") echo "<a href=\"lekarz.php\"><b>LEKARZ</b></a>";
  19.        if ($typ=="gabinet") echo "<a href=\"gabinet.php\"><b>GABINET</b></a>";
  20.        if (!$typ) echo "<a href=\"logowanie.php\"><b>UŻYTKOWNICY</b></a>";
  21.     }else
  22.        throw new Exception('Użytkownik o podanym loginie nie istnieje w systenie.');
  23.  
  24.        ?></td><?php
  25.  
  26. }
  27. ?>
  28.   <html>
  29.   <head>
  30.     <title><?php echo $tytul;?></title>
  31.     <link rel="stylesheet" type="text/css" href="style.css">
  32.     <META HTTP-EQUIV="Expires" CONTENT="0">
  33.     <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
  34.     <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
  35.   </head>
  36.   <body bgcolor="#FFB1F3"><center>
  37.   <table width=673 border=0 cellpading=0 cellspacing=0>
  38. <tr height=24>
  39. <td class=menu width=130 align=center>&nbsp;<a href="ramka.html"><b>STRONA GŁÓWNA</b></a></td>
  40. <?php
  41. sprawdz_kto_to();
  42. ?>
  43. <td class=menu width=133 align=center><a href="kontakt.php"><b>POMOC</b></a></td>
  44. </tr>
  45. <tr>
  46. <td colspan=7><hr color = green></td>
  47. </tr>
  48. </table>
  49. <br>
.Pytanie me takie co należy pozmienić, by następowało przekierowanie na poszczególne strony.
Z góry dzięki za fatyge.Prosze o wyrozumiałość me umiejętności w programowaniu są znikome.Pozdrawiam

Ten post edytował Jaro82 18.05.2006, 16:20:19
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
Foxx
post 18.05.2006, 16:26:16
Post #2





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

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


Poczytaj o header" title="Zobacz w manualu php" target="_manual
Powinieneś zrobić coś w stylu
  1. <?php
  2.  
  3. if ($typ=="admin") header("Location: pacjent.php");
  4.  
  5. ?>


W tym skrypcie, jeżeli będzie służył tylko do przekierowania, nie wyświetlaj tego całego HTML'a, i tak go nikt nie zobaczy.
Poza tym, żeby header() zadziałało nie możesz wysłać nic do przeglądarki (chyba że będziesz buforował, ale tu nie ma takiej potrzeby).

Ten post edytował Foxx 18.05.2006, 16:28:04
Go to the top of the page
+Quote Post
siemakuba
post 18.05.2006, 16:31:45
Post #3





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

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


raczej:
  1. <?php
  2. if ($typ=="admin") 
  3. {
  4. header("Location: pacjent.php");
  5. }
  6. ?>

w innym wypadku kod po headerze zostanie wykonany i moze to sie wiazac z kolejnymi problemami.
Go to the top of the page
+Quote Post
Jaro82
post 18.05.2006, 16:47:49
Post #4





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 9.01.2006
Skąd: Polska Południowa

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


Dokładniej chodzi mi o takie przekierowanie
mam takie menu:
MENU
Chodzi mi o to by po zalogowaniu w menu między REJESTRACJA a UżYTKOWNICY
pojawił sie odpowiedni napis który informuje kim jestem na stronie.Czy to pacjent czy lekarz czy admin.
Z góry dzięki za wszelaką fatyge. Proszę o wyrozumiałość
Jednakże jeśli ktos ma ciekawszy pomysł na takowe rozwiązanie chętnie poczytam.Pozdrawiam

Ten post edytował Jaro82 18.05.2006, 16:59:30
Go to the top of the page
+Quote Post
Foxx
post 18.05.2006, 17:09:23
Post #5





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

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


Po pierwsze, Twoja strona mi się nie otwiera.
Po drugie, wydaje mi się, że chcesz zrobić dwie rzeczy naraz.
Czy te strony dla różnych ludzi różnią się tylko tym dodatkowym wpisem w menu? Jeżeli tak to nie musisz robić przekierowania, w końcu po to jest php.
Możesz umieścić np. w zmiennej sesyjnej dane o tym kto jest zalogowany (pacjent, lekarz...) i w menu umieścić warunek mniej więcej taki jak zrobiłeś:
  1. <?php
  2.  
  3. if($_SESSION['status'] == "lekarz") {
  4. echo "LEKARZ";
  5. } elseif...
  6.  
  7. ?>


A jeżeli koniecznie chcesz przekierować to musisz zrobić skrypt, w którym umieścisz tylko header" title="Zobacz w manualu php" target="_manual w zależności od jakichśtam warunków.

A teraz zrobiłeś tyle, że jeżeli zalogujesz się jako lekarz to w menu wyświetli ci link LEKARZ, który będzie prowadził do strony dla lekarza worriedsmiley.gif
Osoba po zalogowaniu powinna się od razu znaleźć na stronie dla siebie.
Go to the top of the page
+Quote Post
Jaro82
post 18.05.2006, 17:37:57
Post #6





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 9.01.2006
Skąd: Polska Południowa

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


Sorki ale działam na neo i nie mam stałego IP rozłączyło mnie i IP sie zmieniło.
tera działaMENU
Zamierzam dla każdego użytkownika stworzyć inną podstrone.Czyli wnioskuje, że jedynym możliwym rozwiązaniem będzie zastosowanie funkcji header.
Jeśli sie mylę proszę o ewentualne sprostowanie. Z góry dzięki. Pozdro
Go to the top of the page
+Quote Post
Foxx
post 18.05.2006, 17:47:21
Post #7





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

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


Jeżeli już kogoś zalogujesz to tak, możesz użyć header tak jak napisał ~siemakuba.
Jeżeli menu ładujesz całe do każdego z plików to możesz tam po prostu na sztywno wpisać kto jest zalogowany. Ale ładnie byłoby zrobić np. osobną funkcję generującą menu tak zeby nie powtarzać tego samego kodu 3 razy. Wtedy musiałbyś użyć if w celu wyświetlenia w tym menu kto jest zalogowany.
Go to the top of the page
+Quote Post
Jaro82
post 18.05.2006, 17:57:27
Post #8





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 9.01.2006
Skąd: Polska Południowa

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


Dzięki Foxx za pomoc i niezbędne wskazówki cool.gif .
Czyli reasumując wykunuję funkcje, która tworzy dynamiczne menu dla każdego użytkownika w zależności od typu zalogowania.
Go to the top of the page
+Quote Post
Foxx
post 18.05.2006, 17:58:44
Post #9





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

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


Właśnie tak.
Go to the top of the page
+Quote Post
Jaro82
post 18.05.2006, 19:39:38
Post #10





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 9.01.2006
Skąd: Polska Południowa

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


Wraz z kreowaniem tej funkcji nastał problem z wykrywaniem typu i przekazaniem wartości zmiennej typ (PRzynajmniej tak mi sie wydaje)W miejscu wstawienia odpowiedniej nazwy użytkownika wyskoczył WARNING

plik funkcje_prawid_dane.php ma postać:
  1. <?php
  2.  
  3. function wypelniony($zmienne_formularza)
  4. {
  5.   // sprawdzenie, czy każda zmienna posiada wartość
  6.   foreach ($zmienne_formularza as $klucz => $wartosc)
  7.   {
  8.      if (!isset($klucz) || ($wartosc == '')) 
  9.         return false;
  10.   } 
  11.   return true;
  12. }
  13.  
  14. function prawidlowy_email($adres)
  15. {
  16.   // sprawdzenie prawidłowości adresu  poczty elektronicznej
  17.   if (ereg('^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$', $adres))
  18.     return true;
  19.   else 
  20.     return false;
  21. }
  22.  
  23. ?>
Natomiast moja stworzona funkcja ma taką postać:
  1. <?php function sprawdz_kto_to()
  2. //sprawdza typ uzytownika według instniejącego loginu
  3. //przekierowywuje na odpowiednie strony w zależności od typ`u
  4. {
  5.   $lacz = lacz_bd();
  6.   if($wynik = $lacz->query("select typ from uzytkownik
  7.                                where login = '$login'")){
  8.      $wiersz = $wynik->fetch_array();
  9.      $ctyp = $wiersz[0];
  10.      $wynik->close();?>
  11.        <td class=menu width=131 align=center><?php
  12.        if (!$typ)
  13.        {
  14.           echo "<b>UŻYTKOWNICY</b>";
  15.           header("Location: logowanie.php");
  16.           exit;
  17.        }
  18.        if ($typ=="admin")
  19.        {
  20.           echo "<b>ADMINISTRATOR</b>";
  21.           header("Location: aministrator.php");
  22.           exit;
  23.        }
  24.        if ($typ=="lekarz")
  25.        {
  26.           echo "<b>LEKARZ</b>";
  27.           header("Location: lekarz.php");
  28.           exit;
  29.        }
  30.        if ($typ=="gabinet")
  31.        {
  32.           echo "<b>GABINET</b>";
  33.           header("Location: gabinet.php");
  34.           exit;
  35.        }
  36.     }else
  37.        throw new Exception('Użytkownik o podanym loginie nie istnieje w systenie.');
  38.  
  39.        ?></td><?php
  40.  
  41. }
  42. ?>
A linia 182 ma postać
  1. <?php
  2. header("Location: logowanie.php");
  3. ?>

Zawarta jest w mojej funkcji.Proszę o pomoc.

Ten post edytował Jaro82 18.05.2006, 19:47:49
Go to the top of the page
+Quote Post
Foxx
post 18.05.2006, 20:06:38
Post #11





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

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


Jeżeli w skrypcie chcesz użyć header(), nie możesz wysłać nic do przeglądarki. To znaczy żadnego echo, print ani html'a. A u Ciebie w funkcji sprawdz_kto_to w linii 11 jest <TD>, w l.39 podobnie, przed wywołaniem każdego header() masz dodatkowo echo. Naprawdę nie musisz nic wyświetlać na stronie jeżeli zaraz zrobisz z niej przekierowanie. Jeżeli koniecznie chcesz, poczytaj o ob_start" title="Zobacz w manualu php" target="_manual i ob_end_flush" title="Zobacz w manualu php" target="_manual. Dzięki nim będziesz mógł to zrobić.

Poza tym robisz coś takiego:
  1. <?php
  2.  
  3. $ctyp = $wiersz[0];
  4.  
  5. ?>

Ale w if'ie potem sprawdzasz zmienną $typ.
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.06.2025 - 13:07