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