Toon posts:

[php] controle var is int van minder dan 3 tekens

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik heb een php schript gemaakt, die reageert op de output van een formulier, dat werkt allemaal, maar nu wil ik ie de waarde van $tc1 op het volgende controleert:

- is het een integer
- is het een integer van minder dan drie tekens
- heeft $tc1 wel een waarde

ik hebt dit ...
PHP:
1
2
3
4
5
6
<?
    if (!is_int($tc1) || !strlen($tc1)<3 || tc1=="") {
        $tc1 = "fout\n";
        $ok = "false";
    }
?>

nou wil ik dus dat als één van de drie voorwaarde niet klopt dat ie dan $tc1 de waarde fout geeft en $ok de waarde false, nu geeft ie echter altijd de waarde fout en false ...

wat doe ik fout ?

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

je vergeet een $
daarbij is de toewijzing
$ok = "false";
een string en niet een boolean toewijzing.

Klaar voor een nieuwe uitdaging.


Verwijderd

Topicstarter
$ok = "false";
maakt niet uit, dat werkt bij andere dingen in dezelfde functie wel ...
ik heb de $ ervoor gevoegd en er staat nu dus dit ...
PHP:
1
2
3
4
5
6
<?
    if (!is_int($tc1) || !strlen($tc1)<3 || $tc1=="") {
        $tc1 = "fout\n";
        $ok = "false";
    }
?>

hij echter bij alles wat ik invul nog steeds de melding fout ...

Verwijderd

PHP:
1
2
3
4
<?
if(!$tc1 || !is_int($tc1) || strlen($tc1) > 3) echo 'false';
else echo 'good';
?>

should do it

Verwijderd

Een variabele afkomstig van een formulier is altijd een string. Dankzij de ingebouwde functie van php 'is_numeric' is het mogelijk om getallen van letters te onderscheiden.

Verwijderd

Ik denk dat je beter Regexes kunt gebruiken, vele mogelijkheden en volgens mij een stuk veiliger dan dit :)

Verwijderd

Topicstarter
het werkt, maar nu heb ik een nieuwe probleem ...
PHP:
1
2
3
4
5
6
<?
    if (!(is_numeric($tc1)) || !(strlen($tc1) < 3) || ($tc1 = "")) {
        $ok = "false";
        $tc1 = "*****\n";
    }
?>


PHP:
1
2
3
4
5
6
<?
    if ($tc1 == "") { 
        $ok = "false";
        $tc1 = "*****\n"; 
    }
?>

de eerste is de nieuwe oude functie, de tweede de oude ...
als je iets invult wat niet goed is krijg je opnieuw het formulier te zien met de melding ***** (dit geldt voor bijde functies), en als je bij de eerste een goede invult, krijg je bij de output niets te zien, en bij de tweede functie wel ...
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?
if ($send == "ok") {
    if (!(is_numeric($tc1)) || !(strlen($tc1) < 3) || ($tc1 = "")) {
        $ok = "false";
        $tc1 = "*****\n";
    }
    if ($ok != "false"){
        echo "

<form method='post' action='$PHP_SELF'>

<table border='0' cellspacing='1' cellpadding='0' width='500'>
  <tr>
    <td>Eerste Coureur:</td>
    <td>$tc1</td>
  </tr>
</table>

<input type='button' value='<<' onClick='javascript: history.back(1)'>
<input type='submit' value='>>'><br>

</form>

\n";

    }
    elseif ($ok == "false") {
?>

dit is de output ...

  • spine
  • Registratie: Juni 2001
  • Niet online

spine

VISHUDDHI

$tc1 = "" ?????

moeten dat niet $tc1 == "" zijn :)

[edit]
check eerst ff goed je code voor je iets post :)

[BSDFreaks.nl] [www.Dark-Future.org] [Alizarin.nl]


Verwijderd

Topicstarter
klopt, ja sorry, ik had em goed doorgelezen maar sommige dingen zie gewoon over het hoofd :P

  • spine
  • Registratie: Juni 2001
  • Niet online

spine

VISHUDDHI

Op zaterdag 02 februari 2002 18:44 schreef MinardiFan het volgende:
klopt, ja sorry, ik had em goed doorgelezen maar sommige dingen zie gewoon over het hoofd :P
;)

[BSDFreaks.nl] [www.Dark-Future.org] [Alizarin.nl]

Pagina: 1