Error reporting

Status
Niet open voor verdere reacties.

Kligham

Gebruiker
Lid geworden
7 jan 2009
Berichten
389
Hallo,

Ik heb onlangs een registratie formulier gemaakt. Daarnaast heb ik ook een script die de invoer van gegevens moet controleren. Nu is het zo dat ik een try en catch functie gebruik om een fout te detecteren en bijgevolg een exception te throwen. Het gevolg hierbij is nu dat wanneer hij een fout detecteert, meteen een foutmelding geeft en niet meer verder controleert.

Eigenlijk zou ik het zo willen hebben dat hij alles controleert en alle errors tesamen weergeeft. Weet er iemand welke functie ik hier zo kunnen gebruiken?

Ik geef hier alvast mijn try en catch functie:

PHP:
try {
	//Controleren van $gebruikersnaam
	if (!valid_gebruikersnaam($gebruikersnaam)){
		throw new Exception('Gebruikersnaam ongeldig');
	}

	if (!valid_wachtwoord($wachtwoord, $wachtwoord_controle)){
		throw new Exception('Wachtwoord verkeerd');
	}
	
	if (!valid_emailadres($emailadres)){
		throw new Exception('Emailadres ongeldig');
	}
	
	if (!valid_voornaam($voornaam)){
		throw new Exception('voornaam ongeldig');
	}
	
	if (!valid_achternaam($achternaam)){
		throw new Exception('achternaam ongeldig');
	}
	
	if (!valid_straat($straat)){
		throw new Exception('straat ongeldig');
	}
	
	if (!valid_huisnummer($huisnummer)){
		throw new Exception('huisnummer ongeldig');
	}
	
	if (!valid_gemeente($gemeente)){
		throw new Exception('gemeente ongeldig');
	}
	
	if (!valid_postcode($postcode)){
		throw new Exception('postcode ongeldig');
	}
	
	if (!valid_telefoon_gsm_nummer($telefoon_gsm_nummer)){
		throw new Exception('telefoon- of gmsnnummer ongeldig');
	}
	
	//Een random referentie aanmaken
	$tekens = 30;
	$activatiecode = random_generator($tekens);
	
	//Mysql beveiliging
	$wachtwoord_encrypt = hash('sha512', $wachtwoord);
	$activatiecode_encrypt = hash('sha256', $activatiecode);
	
	//Connectie maken met database
	$connection = db_connect();
	
	//De gegevens wegschrijven in de database
	$query = $connection->query("INSRT INTO temp_gebruiker (gebruikersnaam, wachtwoord, emailadres, voornaam, achternaam, straat, huisnummer, bus, gemeente, postcode, land, telefoon_gsm_nummer, activatiecode) VALUES ('$gebruikersnaam', '$wachtwoord_encrypt', '$emailadres', '$voornaam', '$achternaam', '$straat', '$huisnummer', '$bus', '$gemeente', '$postcode', '$land', '$telefoon_gsm_nummer', '$activatiecode_encrypt')");
	
	if (!$query){
		throw new Exception('Godvermiljaardendju twilt nu nog nie in mijn database geraken');
	} else {
		mail_registratie($emailadres, $voornaam, $achternaam, $straat, $huisnummer, $bus, $gemeente, $postcode, $land, $telefoon_gsm_nummer);
	}
}
catch (Exception $exception){
	echo $exception->getMessage();
	exit;	
}
 
Er is hier niet direct een functie voor; wat je kunt doen is gewoon een array maken met alle fouten, en pas na afloop een exception gooien met die array er in.

Je kunt ook een loop gebruiken en alle exceptions intern opvangen en die samen in een grotere exception gooien, als je code diep gelaagd is.
 
Ik snap waar je naartoe wilt. Kun je me toevallig ergens naartoe verwijzen hoe ik dit aan zou moeten pakken. Ik vermoed dat zoiezo heel het script herschreven zal moeten worden aangezien een try method automatisch stopt als hij een fout tegenkomt? of ben ik hier verkeerd?
 
Jep, het zal een stevige worden :)

Wat ik zelf altijd deed was een loop gebruiken met een try{} aan de binnenkant, met slimme functies; maar daarvoor is een forms-library meestal beter (als je een goede hebt, is dat sowieso een aanrader!)

Een begin is om dit:
PHP:
    if (!valid_gebruikersnaam($gebruikersnaam)){
        throw new Exception('Gebruikersnaam ongeldig');
    }

Te vervangen door
PHP:
    if (!valid_gebruikersnaam($gebruikersnaam)){
        $aFouten[] = 'Gebruikersnaam ongeldig';
    }

En vervolgens aan het eind toe te voegen:
PHP:
if ( count ( $aFouten ) > 0 ) {
 $e = new Exception;
 $e->aFouten = $aFouten;
 throw $e;
}

Dan kun je later de error vangen en de lijst met fouten opvragen door
PHP:
catch ( Exception $e ) {
   foreach ( $e->aFouten as $sFout ) {
       // elke fout komt nu langs
  }
}

te doen.

Hoop dat je hier wat aan hebt ! :)
 
Is het dan zoiets dergelijks dat je bedoeld?

PHP:
Loop(

        Try{
  
        }
)

Catch{
}

Maar de vraag is dan hoe die loop zal gaan stoppen? Want als ik nu die try schrijf zoals je vanboven vermeld hebt zal hij toch enkel opnieuw de eerste if doorlopen als er daar een fout gebeurd of zie ik dit helemaal verkeerd?
 
Laatst bewerkt:
nah, hij gaat verder na de Catch :)
Je kunt bijv dit doen:

PHP:
for ( $i = 0 ; $i < 1000 ; $i++ ) {
  try {
    if ( $i % 2 == 0 ) {
     throw new Exception( $i . ' is dividable by 2!' );
    }
  catch ( Exception $e ) {
     echo $e->getMessage();
     echo '<br />';
  }
}

En dan gooit ie netjes al die exceptions, en gaat ie daarna verder :) Hij vervolgt zijn pad nadat het catch{} blok is afgesloten. Je kunt dus in die catch() een array opvullen met exceptions, en die vervolgens aan het eind van de loop gooien als er wat in zit; dan komt een exception met een array vol meer exceptions een stap hoger aan :)

(Disclaimer: dit is géen handige manier om te bepalen welke getallen deelbaar zijn op 2 ;))
 
Ok, ik weet niet of ik het nu helemaal door heb?

Is het dan eigenlijk de bedoeling dat hij elke if als een andere $i gaat beschouwen. Dus als ik bijvoorbeeld 8 velden heb die ik wil controleren, ik 8 if's heb die om de beurt moet gecontroleerd worden.

In de zin van:

PHP:
for ($i, , $i++) {

if (1) controle gebruikersnaam

if(2) controle familienaam 

enzovoort

catch 

}

Zodat hij dus eerst if(1) controleert en indien nodig een exception throwt, dan if(2) controleren indien nodig een exception throwen enzovoort tot hij aan $i = 8 komt?

Of sla ik hier volledig de bal mis?
 
Laatst bewerkt:
Nee, dat zou ik niet doen... ik zou post daarvoor pakken; gewoon alles 1 voor 1 controleren en alle fouten in een array stoppen, en dan aan het eind die array throwen.

Als je het in een loop doet, moet je ook echt slimme functies gebruiken; dan wordt het gewoon

PHP:
<?php
  foreach ( $_POST as $sField => $sValue ) {
     try { 
       if ( !validate( $sField, $sValue ) ) {
          throw new Exception ( "$sField failed with value $sValue" );
       }
     }
     catch ( Exception $e ) {
        $aErrors[] = $e;
     }
  }
  if ( count (  $aErrors ) > 0 ) {
     $e = new BigException;
     $e->aErrors = $aErrors;
     throw $e;
  }
?>
Maar eigenlijk zijn Exception bedoeld om te gebruiken door verschillende lagen heen; zolang je maar 1 laag hebt, zijn ze opzich niet zo hard nodig ;)
 
Ik denk dat ik begin te snappen waar je naartoe wil, alleen weet ik wat je bedoelt met

$_POST as $sField => $sValue

Moet ik dit gaan aanpassen of hoe werkt dit?

In mijn script staat bovenaan boven mijn oorspronkelijke try catch systeem deze variables die hij krijgt van een andere php file met mijn registratie form in.

PHP:
//Aanmaak nodige short variable names
$gebruikersnaam = $_POST['gebruikersnaam'];
$wachtwoord = $_POST['wachtwoord'];
$wachtwoord_controle = $_POST['wachtwoord_controle'];
$emailadres = $_POST['emailadres'];
$voornaam = $_POST['voornaam'];
$achternaam = $_POST['achternaam'];
$straat = $_POST['straat'];
$huisnummer = $_POST['huisnummer'];
$bus = $_POST['bus'];
$gemeente = $_POST['gemeente'];
$postcode = $_POST['postcode'];
$land = $_POST['land'];
$telefoon_gsm_nummer = $_POST['telefoon_gsm_nummer'];
 
Deze moet je toe passen, die heb ik boven ook al gezet:

Een begin is om dit:
PHP:
    if (!valid_gebruikersnaam($gebruikersnaam)){
        throw new Exception('Gebruikersnaam ongeldig');
    }

Te vervangen door
PHP:
    if (!valid_gebruikersnaam($gebruikersnaam)){
        $aFouten[] = 'Gebruikersnaam ongeldig';
    }

En vervolgens aan het eind toe te voegen:
PHP:
if ( count ( $aFouten ) > 0 ) {
 $e = new Exception;
 $e->aFouten = $aFouten;
 throw $e;
}

Je gebruikt hier heel veel Exceptions die niet nodig zijn; weet wanneer je ze moet gebruiken en wanneer niet ;)
Gewoon een array maken en als je het echt graag wil 1 exception aan het eind; maar het beste kun je die ook gewoon weglaten en vervangen door een gewone if.

Houd maar aan als vuistregel: als de throw Exception in dezelfde lap code staat als de Try{} dan is ie niet nodig. Alleen als de Exception uit een functie komt die je aanroept, dan moet je een Catch blok maken.
 
Wat betreft die exceptions: eigenlijk zal het later de bedoeling zijn (als dit hier zou lukken), dat de exceptions gegeven worden door de validatie-functie die in dit script aangeroepen wordt. In elke validatie worden er momenteel met if's die return false gegeven. Dit zou laten aangepast worden met exception throw. In lagen werken zou dan het uiteindelijke doel zijn.

Nu heb ik nog een vraagje:

Vul ik de try statement of deze manier aan:

PHP:
<?php
  foreach ( $_POST as $sField => $sValue ) {
     try { 
       if ( !validate( $sField, $sValue ) ) {
          throw new Exception ( "$sField failed with value $sValue" );
       }
       if ( !validate( $sField, $sValue ) ) {
          throw new Exception ( "$sField failed with value $sValue" );
       }
       if ( !validate( $sField, $sValue ) ) {
          throw new Exception ( "$sField failed with value $sValue" );
       }
     }
     catch ( Exception $e ) {
        $aErrors[] = $e;
     }
  }
  if ( count (  $aErrors ) > 0 ) {
     $e = new BigException;
     $e->aErrors = $aErrors;
     throw $e;
  }
?>

Of op deze wijze:

PHP:
<?php
  foreach ( $_POST as $sField => $sValue ) {
     try { 
       if ( !validate( $sField, $sValue ) ) {
          throw new Exception ( "$sField failed with value $sValue" );
       }
     }
     catch ( Exception $e ) {
        $aErrors[] = $e;
     }
     try { 
       if ( !validate( $sField, $sValue ) ) {
          throw new Exception ( "$sField failed with value $sValue" );
       }
     }
     catch ( Exception $e ) {
        $aErrors[] = $e;
     }
     try { 
       if ( !validate( $sField, $sValue ) ) {
          throw new Exception ( "$sField failed with value $sValue" );
       }
     }
     catch ( Exception $e ) {
        $aErrors[] = $e;
     }
  }
  if ( count (  $aErrors ) > 0 ) {
     $e = new BigException;
     $e->aErrors = $aErrors;
     throw $e;
  }
?>

De exceptions natuurlijk aangepast door bijvoorbeeld $aFouten[] = 'Gebruikersnaam ongeldig';

Ik denk het 2de geval, maar heb zo'n gevoel dat het het eerste zal zijn. Dat zou dan ook meteen betekenen dat ik nog niet echt doorheb hoe een try eigenlijk werkt.
 
Laatst bewerkt:
Ik denk idd dat je beter eerst een uit kunt vogelen wat een try precies doet ;)

Het is ongeveer die 2e.
 
OK, ik heb effe wat gelezen over try en er wordt vooral over gezegd dat ze gebruikt worden bij het throwen van exceptions. Misschien dat het daarom beter is dat ik eerst wat verder ga op dat gedeelte alvorens met die loop en het try gedeelte verder te gaan.

Ik heb een registratie_validatie.php met daarin al de dingen die hij moet controleren. Nu is het zo dat als er iets verkeerd is, hij return false moet geven waardoor er in het try gedeelte van registratie.php (waar we al heel de tijd mee bezig zijn) een exception moet gethrowd worden. Als ik daar nu die return false zou veranderen door een throw new exception. Dan zou ik gaan werken met 2 lagen waarover je het in de vorige posts al had.

Als we nu even de voorgaande dingen vergeten, hoe moet ik er dan voor zorgen dat hij de juiste exception gaat gooien in mijn registratie.php file

Hier is een deel van mijn registratie_validatie.php (namelijk over gebruikersnaam):

PHP:
function valid_gebruikersnaam($gebruikersnaam, $minlength = 2, $maxlength = 16){

	$gebruikersnaam_check = trim($gebruikersnaam);
	
    if (empty($gebruikersnaam_check)){

        throw new Exception('Het veld is leeg'); // Het veld is leeg
    }
    
    if (strlen($gebruikersnaam_check) > $maxlength){
       
		throw new Exception('De gebruikersnaam is te lang'); // De gebruikersnaam is te lang
    }
    
    if (strlen($gebruikersnaam_check) < $minlength){
    
        throw new Exception('De gebruikersnaam is te kort'); // De gebruikersnaam is te kort
    }
    
    //Connectie met database
    $connection = db_connect();
    
    //Controle of gebruikersnaam uniek is
    $query = $connection->query("select * from gebruiker where gebruikersnaam ='" . $gebruikersnaam_check. "'");
    if (!$query){
    	throw new Exception('De query kon niet uitgevoerd worden');
    }
    
    if ($query->num_rows > 0){
    	throw new Exception('De gebruikersnaam bestaat al'); //Er is al zo'n gebruikersnaam aanwezig
    }
    
    db_disconnect();
    
    $check = ereg('^[[:alnum:][:blank:]]+$', $gebruikersnaam_check); //A-Z, a-z, 0-9 en spaties zijn toegelaten
 
    if ($check)
    {
        return true; // Er zijn geen verkeerde tekens gevonden
    } else
    {
        throw new Exception('De gebruikersnaam voldoet niet aan de voorwaarden'); //Er zijn verkeerde tekens gevonden
    }
}

Een van deze exceptions zou dan moeten opgevangen worden door de catch in mijn registratie.php:

PHP:
//Aanmaak nodige short variable names
$gebruikersnaam = $_POST['gebruikersnaam'];
$wachtwoord = $_POST['wachtwoord'];
$wachtwoord_controle = $_POST['wachtwoord_controle'];
$emailadres = $_POST['emailadres'];
$voornaam = $_POST['voornaam'];
$achternaam = $_POST['achternaam'];
$straat = $_POST['straat'];
$huisnummer = $_POST['huisnummer'];
$bus = $_POST['bus'];
$gemeente = $_POST['gemeente'];
$postcode = $_POST['postcode'];
$land = $_POST['land'];
$telefoon_gsm_nummer = $_POST['telefoon_gsm_nummer'];

  try {
    valid_gebruikersnaam();
	}
  catch ( Exception $e ) {
     echo $e->getMessage();
     echo '<br />';
}

Zal dit dan gaan werken op deze manier?

-> Dit is echt niet gemakkelijk. Kzit hier te zweten (ook al is het hier putje winter). :o
 
Laatst bewerkt:
Ik vind het overigens wel vreemd om Exceptions te gebruiken voor formuliererrors. Exceptions gebruik ik in mijn applicatie voor uitzonderingen, niet voor normale situaties.
 
Ik vind het overigens wel vreemd om Exceptions te gebruiken voor formuliererrors. Exceptions gebruik ik in mijn applicatie voor uitzonderingen, niet voor normale situaties.

Ik moet dan gewoon echooen? Dan vraag ik mij af wat dan eigenlijk een uitzondering is, kun je eens een voorbeeld geven?
 
Laatst bewerkt:
Ik heb nu eens alles aangepast, alleen krijg ik nu geen enkele foutmelding te zien:

PHP:
<?php

#### Registratie script ####

//Include de nodige bestanden
require_once ('registratie_validatie.php');
require_once ('db_fns.php');
require_once ('mail_fns.php');
require_once ('generator_fns.php');

//Aanmaak nodige short variable names
$gebruikersnaam = $_POST['gebruikersnaam'];
$wachtwoord = $_POST['wachtwoord'];
$wachtwoord_controle = $_POST['wachtwoord_controle'];
$emailadres = $_POST['emailadres'];
$voornaam = $_POST['voornaam'];
$achternaam = $_POST['achternaam'];
$straat = $_POST['straat'];
$huisnummer = $_POST['huisnummer'];
$bus = $_POST['bus'];
$gemeente = $_POST['gemeente'];
$postcode = $_POST['postcode'];
$land = $_POST['land'];
$telefoon_gsm_nummer = $_POST['telefoon_gsm_nummer'];

foreach ( $_POST as $sField => $sValue ) {
    
	try {  
	
	//Controleren van $gebruikersnaam
	valid_gebruikersnaam($gebruikersnaam);

	valid_wachtwoord($wachtwoord, $wachtwoord_controle);
	
	valid_emailadres($emailadres);
	
	valid_voornaam($voornaam);

	valid_achternaam($achternaam);
	
	valid_straat($straat);

	valid_huisnummer($huisnummer);

	valid_gemeente($gemeente);

	valid_postcode($postcode);
	
	valid_telefoon_gsm_nummer($telefoon_gsm_nummer);
	
	} catch (Exception $e) {
        $aErrors[] = $e;
    }
}
if (count ($aErrors) > 0 ) {
    $e = new BigException;
    $e->aErrors = $aErrors;
    throw $e;

} else {

	//Een random referentie aanmaken
	$tekens = 30;
	$activatiecode = random_generator($tekens);
	
	//Mysql beveiliging
	$wachtwoord_encrypt = hash('sha512', $wachtwoord);
	$activatiecode_encrypt = hash('sha256', $activatiecode);
	
	//Connectie maken met database
	$connection = db_connect();
	
	//De gegevens wegschrijven in de database
	$query = $connection->query("INSRT INTO temp_gebruiker (gebruikersnaam, wachtwoord, emailadres, voornaam, achternaam, straat, huisnummer, bus, gemeente, postcode, land, telefoon_gsm_nummer, activatiecode) VALUES ('$gebruikersnaam', '$wachtwoord_encrypt', '$emailadres', '$voornaam', '$achternaam', '$straat', '$huisnummer', '$bus', '$gemeente', '$postcode', '$land', '$telefoon_gsm_nummer', '$activatiecode_encrypt')");
	
	if (!$query){
		throw new Exception('Godvermiljaardendju twilt nu nog nie in mijn database geraken');
	} else {
		mail_registratie($emailadres, $voornaam, $achternaam, $straat, $huisnummer, $bus, $gemeente, $postcode, $land, $telefoon_gsm_nummer);
	}
}
?>

PHP:
#### Validatie functions ####

//Include de nodige bestanden
require_once ('db_fns.php');

//Validatie gebruikersnaam
function valid_gebruikersnaam($gebruikersnaam, $minlength = 2, $maxlength = 16){

	$gebruikersnaam_check = trim($gebruikersnaam);
	
    if (empty($gebruikersnaam_check)){

        throw new Exception('Gebruikersnaam: Het veld is leeg.'); // Het veld is leeg
    }
    
    if (strlen($gebruikersnaam_check) > $maxlength){
       
		throw new Exception('Gebruikersnaam: Uw gebruikersnaam mag niet meer dan 16 tekens bevatten.'); // De gebruikersnaam is te lang
    }
    
    if (strlen($gebruikersnaam_check) < $minlength){
    
        throw new Exception('Gebruikersnaam: Uw gebruikersnaam moet uit minimaal 2 tekens bestaan.'); // De gebruikersnaam is te kort
    }
    
    //Connectie met database
    $connection = db_connect();
    
    //Controle of gebruikersnaam uniek is
    $query = $connection->query("select * from gebruiker where gebruikersnaam ='" . $gebruikersnaam_check. "'");
    if (!$query){
    	throw new Exception('De query kon niet uitgevoerd worden.');
    }
    
    if ($query->num_rows > 0){
    	throw new Exception('Gebruikersnaam: De gebruikersnaam' . $gebruikersnaam_check . 'is al in gebruik.'); //Er is al zo'n gebruikersnaam aanwezig
    }
    
    db_disconnect();
    
    $check = ereg('^[[:alnum:][:blank:]]+$', $gebruikersnaam_check); //A-Z, a-z, 0-9 en spaties zijn toegelaten
 
    if ($check)
    {
        return true; // Er zijn geen verkeerde tekens gevonden
    } else
    {
        throw new Exception('Gebruikersnaam: Enkel letters, cijfers en spaties zijn toegelaten.'); //Er zijn verkeerde tekens gevonden
    }
}

De andere valid_ functies hebben dezelfde structuur.

Waar loopt het nu nog fout? Hij geeft deze foutmelding:

Fatal error: Class 'BigException' not found in I:\Program Files\Apache Software Foundation\Apache2.2\htdocs\registratie.php on line 59
 
Laatst bewerkt:
Het is al een heel eindje geleden, maar wil hier toch nog eens op inpikken. Ik heb het even met rust gelaten, maar heb besloten om er nog eens voor te gaan met goeie moed :D.

Ik heb de raad van hierboven opgevolgd, en heb ervoor gezorgd dat ik niet meer met exceptions werk, maar wel met alle foutmelding in een array te stoppen en ze dan daarna tesamen te laten displayen. Hoe dan ook, door mijn exceptions aan te passen naar mijn array, is mijn probleem nog altijd niet van de baan. Hij geeft geen foutmelding, maar jammer genoeg ook de foutmeldingen niet die hij normaal gezien zou moeten.

Ik heb even zitten denken waarom het niet zou lukken en vroeg mij af of het hierdoor komt. Aangezien ik mijn fouten laat controleren door functies, die in een ander php bestand zitten, vroeg ik mij af of het kan zijn dat hij $registratie_fouten niet aanziet als de array die normaal gezien vol zou moeten zitten met errors, die gegenereert worden door mijn validatie_ ... functies? Als die $registratie_fouten niet dezelfde zou zijn, dan kan het idd kloppen dat mijn foutmeldingen leeg zij. Alleen is dan de vraag, hoe los je dit op?

Ik geef hier kort een voorbeeld van een validatie_ functie en een ander php script die dit gebruikt:

Php bestand: registratie.php
PHP:
//Aanmaak nodige short variable names
$gebruikersnaam = $_POST['gebruikersnaam'];
$wachtwoord = $_POST['wachtwoord'];
$wachtwoord_controle = $_POST['wachtwoord_controle'];
$emailadres = $_POST['emailadres'];
$voornaam = $_POST['voornaam'];
$achternaam = $_POST['achternaam'];
$straat = $_POST['straat'];
$huisnummer = $_POST['huisnummer'];
$bus = $_POST['bus'];
$gemeente = $_POST['gemeente'];
$postcode = $_POST['postcode'];
$land = $_POST['land'];
$telefoon_gsm_nummer = $_POST['telefoon_gsm_nummer'];

//Controleren van $gebruikersnaam
valid_gebruikersnaam($gebruikersnaam);
valid_wachtwoord($wachtwoord, $wachtwoord_controle);
valid_emailadres($emailadres);
valid_voornaam($voornaam);
valid_achternaam($achternaam);
valid_straat($straat);
valid_huisnummer($huisnummer);
valid_gemeente($gemeente);
valid_postcode($postcode);
valid_telefoon_gsm_nummer($telefoon_gsm_nummer);
	
if ( count ( $registratie_fouten ) > 0 ) {
 
	echo $registratie_fouten;
  
} else {

Php bestand: registratie_fns.php
PHP:
function valid_gebruikersnaam($gebruikersnaam, $minlength = 2, $maxlength = 16){

	$gebruikersnaam_check = trim($gebruikersnaam);
	
    if (empty($gebruikersnaam_check)){

        $registratie_fouten[] = 'Gebruikersnaam: Het veld is leeg.'; // Het veld is leeg
    }
    
    if (strlen($gebruikersnaam_check) > $maxlength){
       
		$registratie_fouten[] = 'Gebruikersnaam: Uw gebruikersnaam mag niet meer dan 16 tekens bevatten.'; // De gebruikersnaam is te lang
    }
    
    if (strlen($gebruikersnaam_check) < $minlength){
    
        $registratie_fouten[] = 'Gebruikersnaam: Uw gebruikersnaam moet uit minimaal 2 tekens bestaan.'; // De gebruikersnaam is te kort
    }
    
    //Connectie met database
    $connection = db_connect();
    
    //Controle of gebruikersnaam uniek is
    $query = $connection->query("select * from gebruiker where gebruikersnaam ='" . $gebruikersnaam_check. "'");
    if (!$query){
    	$registratie_fouten[] = 'De query kon niet uitgevoerd worden.';
    }
    
    if ($query->num_rows > 0){
    	$registratie_fouten[] = 'Gebruikersnaam: De gebruikersnaam' . $gebruikersnaam_check . 'is al in gebruik.'; //Er is al zo'n gebruikersnaam aanwezig
    }
    
    db_disconnect();
    
    $check = ereg('^[[:alnum:][:blank:]]+$', $gebruikersnaam_check); //A-Z, a-z, 0-9 en spaties zijn toegelaten
 
    if ($check)
    {
        return true; // Er zijn geen verkeerde tekens gevonden
    } else
    {
        $registratie_fouten[] = 'Gebruikersnaam: Enkel letters, cijfers en spaties zijn toegelaten.'; //Er zijn verkeerde tekens gevonden
    }
}
 
PHP:
echo $registratie_fouten;

Gaat sowieso niet werken. Dan krijg je iets als:

Code:
Array('waarde1', 'Waarde2');

Wat je wel kunt doen:

PHP:
foreach($registratie_fouten as $fout){
  echo $fout, '<br />';
}
 
Hartelijk dank voor die opmerking, leer meteen weer iets bij :thumb:

Hiermee krijg ik wel nog steeds geen fouten te zien. Kan het zijn dat hij $registratie_fouten van registratie.php niet gelijkstelt aan degene die gegenereerd worden door registratie_fns.php.?

-> $registratie_fouten(registratie_fns.php) =/ $registratie_fouten (registratie.php)?
 
Als je nu eens bovenaan in je functie zet:

PHP:
global $registratie_fouten;

Werkt het dan nog niet?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan