Autor Zpráva
majstersveta
Profil
preco mi toto (z clanku yuhua o zaheslovani stranky)

<body>
<? if($heslo != "mellon"): ?>
<!--přihlaąovací formulář -->
<form>
Zadej heslo: <input type=password name="heslo">
<input type=submit>
</form>
<? ; else: ?>
<h1>Vítejte v Morii!</h1>
... daląí tajný text
<? endif ?>
</body>

nebere moj domaci server a pise mi parse error in line 2 - nedefinovana premenna heslo, a ked to hodim na server kde mam stranku, tak to funguje?
Meldo
Profil
skus na zaciatku scriptu definovat premennu
$heslo = NULL; , alebo pristupovat k premennej pomocou $_POST['heslo'] ale to by si muslem mat <form... method='post'>
ale mozes skusit aj toto:



<?php
if (isset($_POST['odoslat'])) {

if ($_POST['meno']==meno and $_POST['heslo']==heslo) {
include('admin_rozhranie.php');
exit();
}
else {
echo 'Zlé používateľské meno alebo heslo. Skúste to prosím ešte raz.';
} }
?>

<form name="formular" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
Prihlasovacie meno: <input type="text" value="" name="meno" /><p></p>
Prihlasovacie heslo: <input type="password" value="" name="heslo" /><p></p>
<input type="submit" value="Prihlásiť" name="odoslat" />
</form>
Tin
Profil
řekl bych, že tvůj domácí server má v konfiguraci zakázaný registersglobals - Někde u Yuhůa bys o tom měl najít víc
majstersveta
Profil
Tin - zmenil som to a stale to nejde - takze to v tom asi nebol
Meldo - dik pomohlo to
Anonymní
Profil *
k těm regisgter globals: nech je tak jak jsou a nauč se psát skripty bezpečněji ( s použitím superglobálních proměnných $_GET["neco"], $_POST["neco"]
a ješte na začátku skriptu vždycky nuluj všechny normální proměnné:

$neco="";
$neco =$_GET["neco"];
...

krteczek
majstersveta
Profil
a ako mam pouzit to get alebo post? ze napisem samostatny formular, ktory bude odkazovat pomocou napriklad post na uvedeny skript?

a to vynulovanie pomoze k comu?
Anonymní
Profil *
to vynulovani zabrání tomu, aby tam, kde jsou zaplé register globals nemohlo dojít k podstrčení jiné hodnoty než té co je poslána $_POST, $_GET, hodně chyb je takových že se použije proměnná, která není definován
<?php

$poslana="";
$poslana=$_POST["poslana"];
$soucet=$nedefinovana+$poslana;
echo $soucet;

kolik bude $soucet???
Logicky by člověk řekl, že nedefinovana promenna = 0, takže 0+$poslana.
jenže fungují register globals a já mužu podstrčit do getu/postu jakoukoliv hodnotu té proměnné $nedefinovana. skript bude fungovat, ale může mít neblahé následky například u el obchodu:

index.php?$poslana=100 jde snadno změnit na index.php?poslana=100&nedefinovana=-200

tak a kdo ted komu zaplatí???
ted ohledně těch metod:
Vše, co se odesílá odkazem (je vidět v adresním řádku prohlížeče), je posláno metodou GET, včetně formulářů s method="GET", a vším co je posláno v action
action="index.php?radek=10&sloupek=22"

Metodou POST se odesílají obsáhlejší data, nebo data, jež nechceme aby OUI viděl,
což ale neznamená, že je to bezpečnější. Když za PC bude sedět někdo kdo VÍ tak si odešle co bude chtít a je jen na nás jak si s tím naše skripty poradí...

krteczek
peta
Profil *
mezi nami, to je naprosto uzasny script :)
HTML
<? if($heslo != "mellon"): ?>
HTML
<? ; else: ?>
HTML
<? endif ?>
HTML

rychlost zpracovani pri neustalem preblikavani mezi PHP a HTML musi byt naprosto uchvacujici.

Jinak parse error znamena, ze mas chybu v PHP kodu. PHP forum je trochu nekde jinde. Hadal bych, ze je to na tom radku s ELSE a psal bych to jako:
HTML
<? if($heslo != "mellon"){ ?>
HTML
<? }; else{ ?>
HTML
<? } ?>
HTML
S temi zavorkami presne vis, kde ti to zacina a konci. A pokud mas slusny HighLigher soft, tak ti pri najeti na zavorku vysviti i jeji ukonceni, takze kdyz na nejakou zapomenes, hned to vidis.
Leo
Profil
"mezi nami, to je naprosto uzasny script :)"

"rychlost zpracovani pri neustalem preblikavani mezi PHP a HTML musi byt naprosto uchvacujici."

Taky si to myslim, bez ironie, preblikavani, jak vy pisete nema na rychlost vliv, a presne takhle pak vypada oddeleni php a html v sablonovacich systemech. Leo
Toto téma je uzamčeno. Odpověď nelze zaslat.

0