Wat is beter?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2

- SanThe -

- SanThe -

11/10/2011 19:44:02
Quote Anchor link
@Jordi: Als ik jouw code zou beoordelen is dat een dikke onvoldoende. En dan heb ik het niet over de extra variabele $naam. Beide if()'s zijn niet correct en je script zal dan ook niet juist werken. En je formulier heeft onjuiste syntax (in dit geval verkeerde quotes).
Gewijzigd op 11/10/2011 19:45:02 door - SanThe -
 
PHP hulp

PHP hulp

27/11/2024 19:49:14
 
Wouter J

Wouter J

11/10/2011 20:22:53
Quote Anchor link
Ik stop _POST vars voor een query ook altijd in een var. Simpelweg omdat het anders veel te onduidelijk wordt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php

$sQuery
= "SELECT name, pass FROM users WHERE name = '".mysql_real_escape_string((string) $_POST['naam'])."' AND id = ".(int) $_POST['id'];

// Dan vind ik dit beter
$name = mysql_real_escape_string((string) $_POST['naam']);
$id = (int) $_POST['id'];
$sQuery = "SELECT name, pass FROM useres WHERE name = '".$name."' AND id = ".$id;

?>
 
Ozzie PHP

Ozzie PHP

11/10/2011 20:27:06
Quote Anchor link
$id = (int) $_POST['id'];

Als ik nu in het formulier als id "hoi" opgeef, dan wordt dit omgezet naar het cijfer 1. Beter is om te controleren of $_POST['id'] een numerieke waarde bevat. Ja, doorgaan... nee, afbreken.
 
- SanThe -

- SanThe -

11/10/2011 20:29:32
Quote Anchor link
Dan vind ik dit weer duidelijker:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$sQuery
= "SELECT name, pass
        FROM users
        WHERE name = '"
.mysql_real_escape_string((string) $_POST['naam'])."'
        AND id = "
.(int) $_POST['id'];
?>



Toevoeging op 11/10/2011 20:34:47:

Ozzie PHP op 11/10/2011 20:27:06:
$id = (int) $_POST['id'];

Als ik nu in het formulier als id "hoi" opgeef, dan wordt dit omgezet naar het cijfer 1. Beter is om te controleren of $_POST['id'] een numerieke waarde bevat. Ja, doorgaan... nee, afbreken.


Geen 1 maar 0.
Gewijzigd op 11/10/2011 20:29:51 door - SanThe -
 
Ozzie PHP

Ozzie PHP

11/10/2011 20:53:51
Quote Anchor link
correct, was even in de war met een boolean. Thanks voor de correctie.
 
Jelmer -

Jelmer -

11/10/2011 20:57:14
Quote Anchor link
Volgens mij heb je die string cast niet nodig. mysql_real_escape_string interpreteert dat argument altijd als string.

Je kan ook sprintf gebruiken, %d zorgt er dan voor dat het een int is, en niets anders.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$sQuery
= sprintf("SELECT name, pass FROM users WHERE name = '%s' AND id = %d",
    mysql_real_escape_string($_POST['naam']), $_POST['id']);
?>
 
Jordi Kroon

Jordi Kroon

11/10/2011 22:00:42
Quote Anchor link
@Santhe ik heb het zelf niet getest en eigenlijk eventjes snel snel in elkaar gestoken. ik weet dat php het beste met ' kan en html het beste met " voor escapen te voorkomen.

Kan je ook vertellen wat ik niet goed doe bij de if's?
Gewijzigd op 11/10/2011 22:03:22 door Jordi Kroon
 
Wouter J

Wouter J

11/10/2011 22:11:40
Quote Anchor link
!$error kijkt of error false terug geeft, nu is 0 of '' natuurlijk wel gelijk aan false, het is toch niet zo. Een juiste methode is dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
if( count($error) < 1 )
{

  // geen fouten
}
?>
 
Jordi Kroon

Jordi Kroon

11/10/2011 22:17:39
Quote Anchor link
!$error = lege array
$error = array met waarde
die kan je dan met een foreach doorlopen
 
- SanThe -

- SanThe -

11/10/2011 22:45:50
Quote Anchor link
Inderdaad Wouter.

En if(!strlen($naam) <5 || !strlen($naam) > 20) betekent als $naam NIET kleiner is dan 5 of NIET groter dan 20. Dit geeft altijd een error behalve als $naam = ''.
 
Jordi Kroon

Jordi Kroon

11/10/2011 23:08:56
Quote Anchor link
Oh haha nog niet op gelet als ik hem nu terug
lees dan zie ik het ja.

@wouter als jou mamier dmv count netter is dan ben ik zeker bereid die te gebruiken.
Gewijzigd op 11/10/2011 23:10:01 door Jordi Kroon
 
- Mark -

- Mark -

12/10/2011 10:42:27
Quote Anchor link
@ Jordi

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php

    $length
= strlen($_POST['naam']);
    
    if($length < 5 or $length > 20){
        
        $error[] = 'veld naam is niet goed';
    }


?>


Als ik dezelfde functie met dezelfde parameters meerdere keren gebruik dan zet ik ze meestal wel in een aparte var. strlen zal wel niet zo veeleisend zijn maar andere kunnen dat wel zijn.

Maar waar is het gedeelte dat controleerd of $_POST['naam'] wel bestaat? Dat is wat ik juist mis in je script.
 

Pagina: « vorige 1 2



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.