Hallo,
ter validatie van gegevens heb ik het onderstaande lopend op PHP5.3 Maar in 5.5 werkt er helemaal niets meer wat met dit script te maken heeft. Als je tips hebt... graag. Toe nu toe weigert alles en een foute openingstag.... geeft als broncode JOUW php-code vrij inclusief inloggegevens.

De vraag, is de aanroep "validator::onlyDigits($aantal)"op deze manier toegestaan in PHP7
MOET er de instructie "$test= new validator" bijgezet worden?
<?php
//required

class validator
{

//Alleen cijfers
public static function onlyDigits( $pDigits )
{

return ( preg_match( "/^[0-9]+$/", $pDigits ) );

}


} //einde class
?>

//prog
require_once ('validator.class.php');

if (validator::onlyDigits($aantal))
{
$goeie = "ok";

}
else
{
$errormessage = "Foutje in AANTAL";

}
Zet je error_reporting en display_errors eens aan.
het hele setje staat als volgt:
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
error_reporting(-1);
?>
Er komt compleet niets. Nul,Nul broncode. Ik ga gewoon van een formuliertje naar de formulierverwerker. De variabelen zijn goed en al lezend in alle migrating literatuur kom ik op preg_replace. Die mag géén /e meer hebben. Heb ik ook niet maar ik denk dat het daar mis gaat. Als ik die betreffende bestanden include..... komt er geheel niets.
Isoleer het probleem eens? Haal je preg_match() bijvoorbeeld eens tijdelijk weg.
>> Er komt compleet niets. Nul,Nul broncode.

Je toont ook niks.

Typ BOVEN deze regel

return ( preg_match( "/^[0-9]+$/", $pDigits ) );

eens:

echo 'TEST';
public static is volgens mij de goede volgorde, weet je zeker dat je dat in je eigen code / class niet per ongeluk hebt omgedraaid ofzo?

Zet anders de code voor het rapporteren + weergeven van fouten eens helemaal aan het begin van het eerste script dat wordt uitgevoerd (index.php?). Mogelijk gaat er ergens eerder al iets fout.
Verander het onderste gedeelte van je code in dit:
Dan werkt het bij mij gewoon op PHP7.0


if(validator::onlyDigits($aantal)){
	echo("ok"); 
}
else{
	echo("Foutje in AANTAL");
}

Zoals ozzie al zei je toont niks.

<?php
class Validator
{
     /**
      * Alleen decimale cijfers
      *
      * @param mixed $var
      * @return bool
      */
     public static function onlyDigits($var)
     {
         return ctype_digit($var);
     }
}

// Tests
var_dump( Validator::onlyDigits('abc') ); // Moet FALSE zijn
var_dump( Validator::onlyDigits('123') ); // Moet TRUE zijn
?>

Dit werkt in PHP 5.3.21 t/m 7.0.1: https://3v4l.org/W2A93
Alle pregz weggehaald en met ctype en sanitize rechtstreeks ingetoetst. Bij een ander script werkten de BBcodes ook al niet met de pregz. Ook hier alles uit gezet en werkend gekregen. Bij een andere class wordt er eerst een instructie <?php "$txt = new TXT();"?> Dat is bij die validator class niet het geval. Daar was eigenlijk de vraag over: hoe roep ik ze aan? Dat gaat in ieder geval goed alhoewel ik wel een paar haakjes miste maar het heeft altijd gewerkt!!!!
Nou dit formulier. Ik werd er gek van. Ik heb nu telkens een stukje script, eerst groot en daarna steeds kleiner weggehaald en getest.
Toch een openingstag niet voorzien van php
Erg vervelend. Ik had al eens alle php-broncode in de browsercode gezien door het vergeten van de juiste php openingtag tag
Dank voor jullie support. Nou nog even stoeien met de BBcodes.

Reageren