To jest tylko wersja do druku, aby zobaczyć pełną wersję tematu, kliknij TUTAJ
phpBB2 by Przemo
Support forów phpBB2 modified by Przemo

HTML/PHP/AJAX/JS - [PHP] Przekazywanie zmiennych

They2 - 28-03-2008, 23:06
Temat postu: [PHP] Przekazywanie zmiennych
Kod:
if ($sid!="halo") {
echo $tresc;
} else {
if ($id="1") { include('plik.php'); };


to wyglada tak: www.wlasna_strona.pl/index.php?sid=halo
i pojawia plik.php na stronie

a jak to zrobic, zeby byly 2 sidy
np. .../index.php?sid=halo&a=jest_ktos
wtedy pojawia podstrona.

gaku - 28-03-2008, 23:11

po pierwsze, to się nie nazywa sid, bo sid to jest identyfikator sesji, to jest po prostu przekazywanie zmiennych za pomocą GET'a. Twój kod jest niepoprawny, poczytaj o zmiennych GET i POST
They2 - 28-03-2008, 23:18

no to niech bedzie "przekazywanie zmiennych", sorry ze nie zrozumialem tych nazw w php.

gaku, pokaze ci moja strone http://design.alldeaf.pl/portal.php?mode=0
i widzisz ze dziala ? wiec jest poprawny, tam nie ma get i post, tylko te kody wyzej mam, a chce zeby dodalo jeszcze jeden lub 2 przekazywania zm...

gaku - 29-03-2008, 01:28

jest poprawny tak długo jak jest register_globals jest ustawione na on. To nie jest bezpieczne, a zasada jest banalna, plik.php?zmienna1=wartosc&zmienna2=wartosc2, a w kodzie jak chcesz wartości zmiennych to już tylko $_GET['zmienna1'] i &_GET['zmienna2']
They2 - 29-03-2008, 02:50

moglbys napisac przyklady w kodzie a nie zamiast pokombinowac dlugo, szkoda czasu.
gaku - 29-03-2008, 09:50

ehh adres:
Kod:
index.php?mode=0&topic=3

a kod mniej więcej taki:
Kod:
<?php
if (empty($_GET['mode']))
{
  echo("nie wybrano opcji");
}
else
{
  echo($_GET['mode']);
  if(empty($_GET['topic']))
   {
     echo("nie wybrano tematu");
   }
   else
   {
     echo($_GET['topic']);
   }
}
?>

Jeżeli się nie pomyliłem w kodzie- http://szablony.freeware.info.pl/meta-tag.html (kwestia techniczna) to skryp powinien zwrócić wartość 03. Gdy nie jest ustawiona wartość mode to wartość topic nie jest brana pod uwagę nawet jeżeli jest ustawiona

koziolek - 29-03-2008, 09:57

Kod:
<?php
if($_GET['action'] == 'halo')
{
    echo $_GET['tresc'];
}
else if($_GET['action'] == 'file')
{
    include('plik.php');
}
?>
wywołujesz:
Kod:
index.php?action=halo&tresc=Witaj They
i wyświetli Ci napis
Cytat:
Witaj They


jeżeli wywołasz:
Kod:
index.php?action=file
zaincluduje Ci plik plik.php


oczywiście trzeba do tego kodu dopisać jeszcze filtrowanie zmiennych żeby ktoś się nie włamał ;)

They2 napisał/a:
wiec jest poprawny, tam nie ma get i post
masz tam gdzieś logowanie do panelu admina? jeżeli tak to można się włamać ;)
przykład: http://www.webinside.pl/php/artykuly/197

They2 - 29-03-2008, 19:43

koziolek, a teraz jak zrobic zeby byly np. index.php?one=1&two=2 oraz index.php?one=1&two=2&three=3

zrobilem tak:
Kod:
if($_GET['one'] == 'halo')
{
    echo $_GET['tresc'];
}
else if($_GET['one'] == '1')
{
    if($_GET['two'] == '2')
    {
    include('2.php');
    }

    else if($_GET['two'] == '2')
    {
        if($_GET['three'] == '3')
        {
        include('3.php');
        }
    }   
}

ten &two=2 dziala
ale trzeci &three=3 wyswietla raczej drugą :/

koziolek - 29-03-2008, 20:18

bo to działa tak:

Kod:
if(...warunek 1...)
{
    ...jeżeli warunek 1 jest spełniony to wykonaj ten fragment...
}
else if(...warunek 2...)
{
    ...jeżeli warunek 1 NIE jest spełniony ORAZ warunek 2 jest spełniony to wykonaj ten fragment...
}
tak będzie działać:
Kod:
if($_GET['one'] == 'halo')
{
    echo $_GET['tresc'];
}
else if($_GET['one'] == '1')
{
    if($_GET['two'] == '2')
    {
        if($_GET['three'] == '3')
        {
            include('3.php');
        }
        else
        {
            include('2.php');
        }
    }
}

to trzeba troche się zastanowic i pomyśleć ;)

They2 - 03-04-2008, 12:03

zrobilem to co podałes i działa, rzeczywiście trzeba dodać } else { .
No i jeszcze zrobiłem jedna funkcje tak zeby kody byly skrocone :P

dzieki

koziolek napisał/a:
They2 napisał/a:
wiec jest poprawny, tam nie ma get i post

masz tam gdzieś logowanie do panelu admina? jeżeli tak to można się włamać ;)
przykład: http://www.webinside.pl/php/artykuly/197
te logowania ani nawet do panelu adm. na stronie nie mam, wiec to zaden problem ?

Pytanie, jesli zamienilem ze zwyklego na $_GET i $_POST i wyłączyłem (na 0) w .httaccess:
Kod:
php_flag register_globals 0
będzie bezpieczny ?

I te logowanie pochodzi z phpBB by Przemo na własnej stronie jest bezpieczny jeśli register_globals jest wyłączony ?

koziolek - 03-04-2008, 17:56

They2 napisał/a:
Pytanie, jesli zamienilem ze zwyklego na $_GET i $_POST
wiesz że teraz ni będzie Ci to działać, bo zmienne $_POST pochodzą z formularza a nie z paska adresu ;)

They2 napisał/a:
I te logowanie pochodzi z phpBB by Przemo na własnej stronie jest bezpieczny jeśli register_globals jest wyłączony ?
raczej na pewno jest jakieś wbudowane zabezpieczenie ;)
Radek - 03-04-2008, 22:11

Jeżeli register globals jest włączone, to po wpisaniu w plik.php kodu:
Kod:
echo $zmienna;

i wywołaniu adresu plik.php?zmienna=test, wyskoczy napis test. Jeżeli strona będzie 'podpięta' pod phpBB albo sam napiszesz kod który usuwa zmienne to nic się nie stanie. phpBB automatycznie usuwa przy wlaczonym register globals te 'zmienne' z adresu - mozna sie do nich dostać tylko GET'em. ;)

They2 - 05-04-2008, 13:37

koziolek napisał/a:
wiesz że teraz ni będzie Ci to działać, bo zmienne $_POST pochodzą z formularza a nie z paska adresu ;)
a tak rzeczywiscie to do formularza.

RuseK, rozumiem i dzieki.

Pozostaje tylko mam problem z pobraniem pliku na stronie.
np. http://design.alldeaf.pl/...Polchat_1.8.zip

sprobowalem zamienic w $_GET i tak wyszlo bledy:
Cytat:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING

az tyle :/

te kody: fopen, file_exists, flock, fgets, fwrite, fclose - nie moga dzialac ?

Radek - 05-04-2008, 17:44

A możesz pokazać kod tego pliku pobierz.php?
They2 - 05-04-2008, 18:53

Kod:
<?php
$download = '$dn';

if($_GET['dn'])
{
file_exists("/katalog/$_GET['dn'].'.n"))

//początek licznika
$file=fopen("/katalog/$_GET['dn'].'.n", "r");

flock($file, 1);
$cyfra=fgets($file, 100);
flock($file, 3);
fclose($file);
$cyfra++;

$file=fopen("/katalog/$_GET['dn'].'.n", "w");

flock($file, 2);
fwrite($file, $cyfra);
flock($file, 3);
fclose($file);
// koniec licznika

header("Location: /katalog/$_GET['download']");

}
else
{

$file=fopen("/katalog/$_GET['dn'].'.n", "w");

flock($file, 2);
fwrite($file, "1");
flock($file, 3);
fclose($file);

header("Location: /katalog/$_GET['download']");
}
?>


blad pojawia sie od poczatku file_exist...



Powered by phpBB modified by Przemo © 2003 phpBB Group