Even een kleine discussie.

Wij hebben een leraar.

Hij zegt het volgende:

<?php
// goed
$naam = $_POST['naam'];
$_SESSION['naam'] = $naam;

//fout
$_SESSION['naam'] = $_POST['naam'];

?>

Citaat: Als je dit op een toets doet (de foute manier) dan krijg je een onvoldoende
Wat zeggen jullie
Jordi kroon op 10/10/2011 21:54:47

Hij zegt ook dat $_SESSION vars niet in een query mogen staan . Omdat je dan errors krijgt.

Misschien eens even met de directie van je school praten en zeggen dat die leraar klinkklare onzin verkoopt?

Ozzie PHP op 10/10/2011 22:13:08

[quote="Jordi kroon op 10/10/2011 21:54:47"]
Hij zegt ook dat $_SESSION vars niet in een query mogen staan . Omdat je dan errors krijgt.

Misschien eens even met de directie van je school praten en zeggen dat die leraar klinkklare onzin verkoopt?


[/quote]
Idd...

Is het soms je geschiedenisleraar?
- SanThe - op 10/10/2011 23:03:30

Is het soms je geschiedenisleraar?


I lolled
Ik zit bij Jordi in de klas. Onze docente zegt dat de onderstaande code een onvoldoende zou krijgen. Simpelweg omdat er _POST data in een query word gebruikt. :S

<?php
session_start();
unset($_SESSION['id']);
include 'config.php';

if($_SERVER['REQUEST_METHOD'] == "POST"){
		if(empty($_POST['username'])){
			echo "Geen username op gegeven.<br />";
		}else{
			if(empty($_POST['password'])){
				echo "Geen password op gegeven.<br />";
			}else{			
			$query = mysql_query("INSERT INTO members(username,password) VALUES('".mysql_real_escape_string($_POST['username'])."','".mysql_real_escape_string(md5($_POST['password']))."')");
				
			if($query){
			header("location: index.php");	
			}else{
				echo "Registratie mislukt.<br />Probeer het opnieuw, klik <a href='index.php'>hier</a>";
			}
			
			}		
			
		}
	
	}else{
		// terug form
	}

?>
Je code is dan niet helemaal goed, maar $_POST data in een query is niets mis mee als je het beveiligd?
@gerhard, ben pas 4 weken bezig met php. Geloof graag dat het hier en daar niet klopt. Maar deze discussie lezende weet ik niet hoe ik nu door moet gaan met programmeren. Haar methodes hanteren of luisteren naar het advies van Jordi en andere klasgenoten.
Doe op de examens wat de school wil zien. Hou in je achterhoofd dat het anders/beter kan.

[size=xsmall]Toevoeging op 11/10/2011 13:43:54:[/size]

Rick van Hout op 11/10/2011 13:35:12

<?php
$bedrag_inc = 13.03;
$btw = 19; // 0 - 6 - 19

echo 'Bedrag inclusief: '.$bedrag_inc .'<br>';

$bedrag_ex = $bedrag_inc/(100+$btw)*100;
echo 'Bedrag exclusief: '.$bedrag_ex.'<br>'; //totaal

$bedrag_ex = round($bedrag_ex, 2); //totaal afgerond
echo 'Eindbedrag: '.$bedrag_ex.'<br>';
?>


Dit scriptje van Rick (uit een ander topic gehaald) is een mooi voorbeeld van het nuttig gebruik van een extra variable. Hier geeft het een helder en duidelijk overzicht. Zeer netjes.
Roel Sluper op 11/10/2011 09:38:55

Ik zit bij Jordi in de klas. Onze docente zegt dat de onderstaande code een onvoldoende zou krijgen. Simpelweg omdat er _POST data in een query word gebruikt. :S

Het hangt er vanaf of je de _POST data hebt gecontroleerd. Als bezoekers van jouw website zich moeten inschrijven en daarbij een gebruikersnaam en wachtwoord moeten verzinnen, dan wil je dat de gebruikersnaam en het wachtwoord aan bepaalde eisen voldoen. Bijvoorbeeld: de gebruikersnaam moet minimaal 6 en hooguit 8 tekens bevatten en het wachtwoord moet minimaal 6 en hooguit 8 tekens bevatten, en daarnaast moet het wachtwoord bestaan uit tenminste 1 letter en tenminste 1 cijfer.

Als je nu de _POST data meteen in de query zet, dus zonder deze te controleren, dan kan het zijn dat iemand een gebruikersnaam van 100 tekens invoert, of het kan zo zijn dat iemand een wachtwoord invoert waar geen cijfers inzitten. Daarom is het een goede gewoonte om _POST data altijd eerst te controleren zodat je weet of de data voldoet aan jouw eisen. Ik denk dat dat is wat jouw lerares bedoelt. Dat je dus niet zomaar de _POST data in een query mag gebruiken zonder deze data eerst gecontroleerd te hebben. Echter, als je de _POST data hebt gecontroleerd en deze aan jouw eisen voldoet, dan mag je de _POST data wel in de query gebruiken. Ik hoop dat het zo wat duidelijker is.
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
	$naam = $_POST['naam'];
	$error = array();
	if(!strlen($naam) <5 || !strlen($naam) > 20)
	{
		$error[] = 'veld naam is niet goed';
	}
	
	if(!$error)
	{
		//insert query met $naam
	}
}
?>
	
	
<form method='post' action=''>
	<input type='text' name='naam' />
	<input type='submit' value='submit' />
</form>


Dit is dus een voldoende voor mij want $naam is gedefineerd met $_POST['naam'];
ook al vind ik is dat $_POST['naam'] ook direct in de controle + query kan
waarom staat bas kreleger als last post? ik zie hem hier niet tussen staan.

Reageren