PDA

Bekijk Volledige Versie : PHP - variabelen



Haico
13/11/05, 22:45
Hallo,

Ik probeer wijs te worden in het correct gebruiken van variabelen maar ik
voel me er nog niet zeker van. Als ik een formulier heb waar een veld
'f_bedrag' moet worden ingevuld, en ik wil dit veilig kunnen opslaan in een
database en vervolgens in dezelfde sessie altijd kunnen gebruiken als ik
bijvoorbeeld in een uit meerdere pagina's bestaand formulier heen en weer
blader, dan is onderstaande code toch redelijk goed?

==== formulier =========
echo "<input type='text' name='f_bedrag' value=' ".$_SESSION['s_bedrag]."
'size='11' maxlength='11' >";


===== verwerk formulier =========
if($_SERVER['REQUEST_METHOD'] == 'POST') {
// Haal alle rotzooi van de variable $f_bedrag
if (isset($_POST['f_bedrag] )) {
$_SESSION['s_bedrag] = htmlspecialchars( trim
(addslashes($f_bedrag) ) );
$sql="UPDATE $table_name SET a_bedrag='".$_SESSION['s_bedrag']." '
" ;
}
}

Kunnen die $_SESSION variabelen nu gefaked worden? Ik heb al meerdere malen
het advies gekregen om op 'register_globals' te zoeken maar ik begrijp ( na
het zoeken ) nog niet waarom.

Alvast bedankt.

Haico Spaapen

Rene Pijlman
13/11/05, 23:00
Haico:
>if($_SERVER['REQUEST_METHOD'] == 'POST') {
> // Haal alle rotzooi van de variable $f_bedrag
> if (isset($_POST['f_bedrag] )) {
> $_SESSION['s_bedrag] = htmlspecialchars( trim
>(addslashes($f_bedrag) ) );
> $sql="UPDATE $table_name SET a_bedrag='".$_SESSION['s_bedrag']." '
>" ;
> }
>}
>
>Kunnen die $_SESSION variabelen nu gefaked worden? Ik heb al meerdere malen
>het advies gekregen om op 'register_globals' te zoeken maar ik begrijp ( na
>het zoeken ) nog niet waarom.

Het probleem is $f_bedrag. Waar krijgt die zijn waarde? Waar denk je dat
die waarde vandaan komt? Waar zou hij nog meer vandaan kunnen komen? Is
dat dus betrouwbaar?

--
René Pijlman

Wat wil jij leren? http://www.leren.nl

Maarten Wierda
13/11/05, 23:00
Haico wrote:

> Hallo,

Hoi,

> echo "<input type='text' name='f_bedrag' value='
> ".$_SESSION['s_bedrag]."

$_SESSION['s_bedrag']

> $_SESSION['s_bedrag] = htmlspecialchars( trim

$_SESSION['s_bedrag']

Oftewel beide keren een single quote vergeten. Het grote
probleem is echter terug te vinden in René's reactie.


--
Cheers,
Maarten Wierda

Haico
14/11/05, 21:15
>> echo "<input type='text' name='f_bedrag' value='
>> ".$_SESSION['s_bedrag]."
>
> $_SESSION['s_bedrag']
>
>> $_SESSION['s_bedrag] = htmlspecialchars( trim
>
> $_SESSION['s_bedrag']
>
> Oftewel beide keren een single quote vergeten. Het grote
> probleem is echter terug te vinden in René's reactie.

Sorry, ik moest even voor de duidelijkheid de naam van de variabele
veranderen en selecteerde de tekst door erop te dubbelclicken waarbij hij
dus ook de single quote meeneemt, die ik vergat terug te zetten.....

Haico

Haico
14/11/05, 21:15
> Het probleem is $f_bedrag. Waar krijgt die zijn waarde?
In een formulier hoop ik...

> Waar denk je dat die waarde vandaan komt?
Ik hoop uit mijn formulier....

>Waar zou hij nog meer vandaan kunnen komen?
Van stoute mensen met slechte bedoelingen?

> Is dat dus betrouwbaar?
nee he?

Mijn idee is om een gebruiker in te laten loggen via een veilig inlogscript.

Als hij met de juiste combinatie inlogt maak ik 2 $_SESSION variabelen aan:
$_SESSION['s_inlog'] = 'ok' ;
$_SESSION['s_klant_nummer'] = '$record->klant_id' ;

In elke pagina die 'beveiligd' moet zijn kijk ik of deze 2 variabelen
bestaan en/of niet leeg zijn.
Bestaan ze niet of zijn ze leeg dan gaat de bezoeker meteen naar het
inlogscherm met een
session_destroy .

Op deze manier kan ik er toch zeker van zijn dat alleen ingelogde en aan een
klant_nummer
gekoppelde bezoekers op bepaalde pagina's kunnen komen ??

Dan werkt ( hetzij uit een FORM of uit een URL afkomstig ) het volgende toch
niet??
www.domein.com/login/winkelwagen.php?s_klant_nummer=1111

Haico














>
> --
> René Pijlman
>
> Wat wil jij leren? http://www.leren.nl