Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: definiowanie funkcji
Forum PHP.pl > Forum > Przedszkole
track
Witam serdecznie. Mam taka funkcje:

[php:1:040d9dfeb2]<?php
function login ($page_user, $page_pass)
{
if ($page_user != "" AND $page_pass != "") {
$p_user = $_POST['page_user'];
$ask = "SELECT * FROM sms_users WHERE user = '$p_user' ";
$do = mysql_query($ask) or die("<P>Error: <b> " . mysql_error() . "n");
$num = mysql_numrows($do);
if ($num == "1") {
$pole = mysql_fetch_array($do);
if ($pole[pass] == $page_pass) {
session_register('page_user');
$page_user = $pole[user];
$loged = "in";
session_register('loged');
if ($pole[status] == "A") {
$admin = "Y";
session_register('admin');
}
$message .= "Zostałe&para; poprawnie zalogowany.";
} else {
$message .= "Wprowadzone hasło jest niepoprawne.";
}
} else {
$message .= "Niema takiego użytkownika.";
}
}
return;
}

?>[/php:1:040d9dfeb2]

Zastanawiam sie dlaczego po wywolaniu jej w sposob:

[php:1:040d9dfeb2]<?php
login($page_user, $page_pass)
?>[/php:1:040d9dfeb2]

Funkcja nie chce dzialac. Nie rejestruje zmiennych w sesji. Dlaczego?
Z gory dzieki za pomoc.

TRACK
netzah
session_register rejestruje zmienne globalne, wiec:
moze dodac na poczatku

[php:1:e516b2bd4e]<?php
global $page_user, $loged, $admin;
?>[/php:1:e516b2bd4e]

albo odwoluj sie do zmiennych przez $GLOBALS['loged'], itp..
kszychu
No właśnie: używaj tablicy $_SESSION i na początku (najlepiej skryptu) daj session_start().
track
Dodalem na poczatku (przed wywolaniem funkcji) linijke:

global $page_user, $page_pass, $admin, $status, $loged;

i caly czas nie dziala. Dlaczego?
Ace
Cytat
Witam serdecznie. Mam taka funkcje:

[php:1:7b3f80ec05]<?php
global $page_user, $page_pass, $admin, $status, $loged;  // zle !!
function login ($page_user, $page_pass)
{
global $page_user, $page_pass, $admin, $status, $loged;  // ok
   if ($page_user != "" AND $page_pass != "") {
       $p_user = $_POST['page_user'];
       $ask = "SELECT * FROM sms_users WHERE user = '$p_user' ";
       $do = mysql_query($ask) or die("<P>Error: <b> " . mysql_error() . "n");
       $num = mysql_numrows($do);
       if ($num == "1") {
           $pole = mysql_fetch_array($do);
           if ($pole[pass] == $page_pass) {
               session_register('page_user');
               $page_user = $pole[user];
               $loged = "in";
               session_register('loged');
               if ($pole[status] == "A") {
                   $admin = "Y";
                   session_register('admin');
               }  
               $message .= "Zostałe&para; poprawnie zalogowany.";
           } else {
               $message .= "Wprowadzone hasło jest niepoprawne.";
           }  
       } else {
           $message .= "Niema takiego użytkownika.";
       }  
   }  
   return;
}

?>[/php:1:7b3f80ec05]

Zastanawiam sie dlaczego po wywolaniu jej w sposob:

[php:1:7b3f80ec05]<?php
login($page_user, $page_pass)
?>[/php:1:7b3f80ec05]

Funkcja nie chce dzialac. Nie rejestruje zmiennych w sesji. Dlaczego?  
Z gory dzieki za pomoc.

TRACK
track
No ok.... a gdzie jakas wskazowka?
Chewolf
Cytat
No ok.... a gdzie jakas wskazowka?

Gościu popatrz w Kod php !
Cytat
<?php  
global $page_user, $page_pass, $admin, $status, $loged;  // zle !!
function login ($page_user, $page_pass)  
{  
global $page_user, $page_pass, $admin, $status, $loged;  // ok
   if ($page_user != "" AND $page_pass != "") {  
       $p_user = $_POST['page_user'];  
       $ask = "SELECT * FROM sms_users WHERE user = '$p_user' ";  
track
Przepraszam. Niedopatrzenie.

Zrobilem tak i niestety problem pozostal. Ciagle nie dziala.

Przedstawie problem moze jeszcze raz:

funkcja:
[php:1:6cea765a27]<?php
function login ($page_user, $page_pass)
{
global $page_user, $page_pass, $admin, $status, $loged;
if ($page_user != "" AND $page_pass != "") {
$p_user = $_POST['page_user'];
$ask = "SELECT * FROM sms_users WHERE user = '$p_user' ";
$do = mysql_query($ask) or die("<P>Error: <b> " . mysql_error() . "n");
$num = mysql_numrows($do);
if ($num == "1") {
$pole = mysql_fetch_array($do);
if ($pole[pass] == $page_pass) {
$page_user = $pole[user];
session_register('page_user');
$loged = "in";
session_register('loged');
if ($pole[status] == "A") {
$admin = "Y";
session_register('admin');
}
$message .= "Zostałe&para; poprawnie zalogowany.";
} else {
$message .= "Wprowadzone hasło jest niepoprawne.";
}
} else {
$message .= "Niema takiego użytkownika.";
}
}
return;
}
?>[/php:1:6cea765a27]

I oto plik w ktorym funkcja jest uzywana:

[php:1:6cea765a27]<?php
if($_POST[page_user] != "" && $_POST[page_pass] != "")
{
echo "Login i hasło zostały podane.<p>";
}
login($_POST[page_user], $_POST[page_pass]);

if ($_SESSION[admin] == "Y") {
$ask = "UPDATE sms_prasa_komentarze SET active = 'Y' WHERE id = '$_SESSION[com]'";
$do = mysql_query($ask) or die("<P>Error: <b> " . mysql_error() . "n");

echo "Komentarz został aktywowany.";
echo "<p>";
echo "<img src=pliki/arrow_left.gif bordr=0> <a href=index.php?id=prasa>powrót</a>";
} else {
echo "<center>";
echo "Numer komentarza: $_SESSION[com] <br>";
echo "Aktywacji dokonać może tylko administrator. Proszę się zalogować.";
echo "<form action=index.php?id=prasa&action=active_com method=post>";
echo "<table border=0 cellpadding=0 cellspacing=0 style='font-size: 11' align=center>";
echo "<tr><td align=center>Login:</td></tr>";
echo "<tr><td align=center><input type=text name=page_user size=12></td></tr>";
echo "<tr><td align=center>Hasło:</td></tr>";
echo "<tr><td align=center><input type=password name=page_pass size=12></td></tr>";
echo "<tr><td align=center><input type=submit value='Loguj' class=input_button></td></tr>";
echo "</table>";
echo "</form>";
echo "</center>";
}

?>[/php:1:6cea765a27]

i nie dziala. Wydaje mi sie, ze wszystko jest dobrze, ale moglem cos przeoczyc.

Pozdrawiam
Kinool
a session_start() questionmark.gif?
track
session_start() jest w pliku idex.php do ktorego sa wrzucane wszystkie skrypty itd.
netzah
Zauwaz, ze zmienne $page_user, $page_pass wystepuja zarowno jako paramert funkcji, jak i globale - a to niedobrze, wiec zmien im nazwy.
track
Wielkie dzieki. Pomoglo.

Pozdrawiam...
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.