[PHP][Check functie] Fout met eregi()
Explosive - 24/07/2006 19:28
Lid
Mede webmasters,
na gezocht te hebben op het forum, heb ik info gevonden over de eregi() functie. tevens heb ik mijn php5 boek doorgespit en op www.php.net gekeken, maar ik kom er maar niet uit.
Dit is me probleem:
// validate website
private function validatewebsite($value){
// trim and escape
$value = trim($value);
return (!eregi('^www\\.[A-Za-z0-9_-]+[A-Za-z]{2,4}$', $value)) ? 0 : 1;
}
// validate website
private function validatewebsite( $value ) {
// trim and escape
return ( ! eregi ( '^www\\.[A-Za-z0-9_-]+[A-Za-z]{2,4}$' , $value ) ) ?
0 : 1 ; }
Dit stukje code moet nakijken of er wel een geldige website is ingevuld. Ik krijg het echter niet werkend.
20 antwoorden
Gesponsorde links
marten - 24/07/2006 19:32 (laatste wijziging 24/07/2006 19:32)
Beheerder
probeer deze eens
(ftp|http):\/\/([_a-z\d\-]+(\.[_a-z\d\-]+)+)(([_a-z\d\-\\\.\/]+[_a-z\d\-\\\/])+)
( ftp| http) : \/ \/ ( [ _a- z\d\- ] + ( \. [ _a- z\d\- ] + ) + ) ( ( [ _a- z\d\- \\\. \/ ] + [ _a- z\d\- \\\/ ] ) + )
Explosive - 24/07/2006 20:37 (laatste wijziging 24/07/2006 22:52)
Lid
Marten, Ik heb jou code ingevoegd:
<?php private function validatewebsite($value){
// trim and escape
$value = trim($value);
return (!eregi('^(ftp|http)://([_a-zd-]+(.[_a-zd-]+)+)(([_a-zd-./]+[_a-zd-/])+$', $value)) ? 0 : 1;
}?>
<?php private function validatewebsite( $value ) {
// trim and escape
return ( ! eregi ( '^(ftp|http)://([_a-zd-]+(.[_a-zd-]+)+)(([_a-zd-./]+[_a-zd-/])+$' , $value ) ) ?
0 : 1 ; } ?>
Maar het werkt nog steeds niet .. ik krijg de volgende error:Citaat:
ERRNO: 2 TEXT: eregi() [function.eregi]: REG_ERANGE LOCATION: C:webserverwwwDwww.djclone.nlmain_phpvalidate.class.php, line111
Wat heb ik fout gedaan?
Explosive - 25/07/2006 15:01 (laatste wijziging 25/07/2006 19:45)
Lid
Ook met jou aanpassing, houd ik dezelfde error.
Citaat:
ERRNO: 2 TEXT: eregi() [function.eregi]: REG_ERANGE LOCATION: C:webserverwwwDwww.djclone.nlmain_phpvalidate.class.php, line111
Grayen - 25/07/2006 19:52
PHP ver gevorderde
// validate website
private function validatewebsite($value){
// trim and escape
$value = trim($value);
return (!eregi('^http://.[a-z0-9\./]+\.[a-z]{2,4}$', $value)) ? 0 : 1;
}
// validate website
private function validatewebsite( $value ) {
// trim and escape
return ( ! eregi ( '^http://.[a-z0-9\./]+\.[a-z]{2,4}$' , $value ) ) ?
0 : 1 ; }
deze gebruik ik
Explosive - 25/07/2006 20:20 (laatste wijziging 25/07/2006 20:25)
Lid
Als ik dan http://www.d-power.nl laat valideren, is die niet geldig.
me code nu:
private function validatewebsite($value){
// trim and escape
$value = trim($value);
return (!eregi('^http://.[a-z0-9\./]+\.[a-z]{2,4}$', $value)) ? 0 : 1;
}
private function validatewebsite( $value ) {
// trim and escape
return ( ! eregi ( '^http://.[a-z0-9\./]+\.[a-z]{2,4}$' , $value ) ) ?
0 : 1 ; }
Ik vraag me eigenlijk af of ik dit deel wel goed heb
EDIT: Nu werkt het wel ik heb -_ toegevoegd
me code nu:
return (!eregi('^http://.[a-z0-9\./_-]+\.[a-z]{2,4}$', $value)) ? 0 : 1;
return ( ! eregi ( '^http://.[a-z0-9\./_-]+\.[a-z]{2,4}$' , $value ) ) ?
0 : 1 ;
Rens - 25/07/2006 20:23
Crew algemeen
Dat is niet eens nodig.
private function validatewebsite($value){
// trim and escape
$value = trim($value);
return (eregi('^http://.[a-z0-9\./]+\.[a-z]{2,4}$', $value));
}
private function validatewebsite( $value ) {
// trim and escape
return ( eregi ( '^http://.[a-z0-9\./]+\.[a-z]{2,4}$' , $value ) ) ; }
Als je van die private nu eens een public maakt?
Explosive - 25/07/2006 20:33
Lid
Citaat:
EDIT: Nu werkt het wel ik heb -_ toegevoegd
me code nu:
[..code..]
Ik zit nu nog wel met wat probleepjes, maar die ga ik eerst zelf proberen op te lossen.
probleempjes:
1. er moet nu http:// voor anders is die niet geldig
2. het is een keus om een site in te vullen, nu is het verplicht.
Grayen - 25/07/2006 20:38 (laatste wijziging 25/07/2006 20:38)
PHP ver gevorderde
<?php
if(!empty($_POST['website'])){
if(substr($_POST['website'], 0, 7) != 'http://'){
$sWebsite = 'http://'.$_POST['website'];
}
if(!ereg('^http://.[a-zA-Z0-9\./]+\.[a-z]{2,4}$', $sWebsite)){
$sError .= '<li>U heeft een ongeldig website url ingevuld in het veld <strong>website</strong>.</li>'."\n";
}
}
?>
<?php
if ( ! empty ( $_POST [ 'website' ] ) ) { if ( substr ( $_POST [ 'website' ] , 0 , 7 ) != 'http://' ) { $sWebsite = 'http://' . $_POST [ 'website' ] ;
}
if ( ! ereg ( '^http://.[a-zA-Z0-9\./]+\.[a-z]{2,4}$' , $sWebsite ) ) { $sError .= '<li>U heeft een ongeldig website url ingevuld in het veld <strong>website</strong>.</li>' . "\n " ;
}
}
?>
ik heb namelijk zelf een functie lopen maken zodat ik alle inputs niet elke keer met lange scripts hoeft te controleren (dit is een bewerkt stukje ervan)
Explosive - 25/07/2006 21:01
Lid
Dank je Grayen, dit stuk werkt nu perfect.
Nu ga ik nog even kijken hoe ik de verplichting ongedaan krijg.
Grayen - 25/07/2006 21:18 (laatste wijziging 25/07/2006 21:27)
PHP ver gevorderde
lukt echo $_POST['txtwww'].'<br />'.$_SESSION['value']['txtwww'].'<br />' niet? superglobals moeten toch met hoofdletters? aangezien jij net in je post zei $_session ik weet het niet hoor maar mis is dat het
Grayen - 25/07/2006 21:41
PHP ver gevorderde
plaats ander het stuk script waarin ergens die waarde aangegeven staat in plaatscode.be.
Explosive - 25/07/2006 22:07 (laatste wijziging 25/07/2006 22:11)
Lid
Ik heb even geen goede internet verbinding tot me beschikking.. Ik zal de uitgeklede code hier even posten.
De class, alle AJAX zooi gestript
<?php
// Class supports AJAX and web form validating
class Validate {
// validates all form fields on form submit
public function ValidatePHP(){
// error flag, becomes 1 when found.
$errorsExist = 0;
// clears the error flag.
if(isset($_SESSION['errors']))
unset($_SESSION['error']);
// standaard is alles valid
$_SESSION['errors']['txtnaam'] = 'hidden';
$_SESSION['errors']['txtwww'] = 'hidden';
$_SESSION['errors']['txtemail'] = 'hidden';
$_SESSION['errors']['txtmsg'] = 'hidden';
// validate naam
if(!$this->validatenaam($_POST['txtnaam'])){
$_SESSION['errors']['txtnaam'] = 'error';
$errorsExist = 1;
}
// validate website
if(!$this->validatewebsite($_POST['txtwww'])){
$_SESSION['errors']['txtwww'] = 'error';
$errorsExist = 1;
}
// validate email
if(!$this->validateemail($_POST['txtemail'])){
$_SESSION['errors']['txtemail'] = 'error';
$errorsExist = 1;
}
// validate msg
if(!$this->validatemsg($_POST['txtmsg'])){
$_SESSION['errors']['txtmsg'] = 'error';
$errorsExist = 1;
}
// if no errors are found
if($errorsExist == 0) {
return 'index.php?nav=guestbook&state=ADD';
} else {
// if errors are found, save current input
foreach ($_POST as $key => $value) {
$_SESSION['values'][$key] = $_POST[$key];
}
return 'index.php?nav=guestbook';
}
}
?>
<?php
// Class supports AJAX and web form validating
class Validate {
// validates all form fields on form submit
public function ValidatePHP( ) {
// error flag, becomes 1 when found.
$errorsExist = 0 ;
// clears the error flag.
if ( isset ( $_SESSION [ 'errors' ] ) ) unset ( $_SESSION [ 'error' ] ) ;
// standaard is alles valid
$_SESSION [ 'errors' ] [ 'txtnaam' ] = 'hidden' ;
$_SESSION [ 'errors' ] [ 'txtwww' ] = 'hidden' ;
$_SESSION [ 'errors' ] [ 'txtemail' ] = 'hidden' ;
$_SESSION [ 'errors' ] [ 'txtmsg' ] = 'hidden' ;
// validate naam
if ( ! $this -> validatenaam ( $_POST [ 'txtnaam' ] ) ) {
$_SESSION [ 'errors' ] [ 'txtnaam' ] = 'error' ;
$errorsExist = 1 ;
}
// validate website
if ( ! $this -> validatewebsite ( $_POST [ 'txtwww' ] ) ) {
$_SESSION [ 'errors' ] [ 'txtwww' ] = 'error' ;
$errorsExist = 1 ;
}
// validate email
if ( ! $this -> validateemail ( $_POST [ 'txtemail' ] ) ) {
$_SESSION [ 'errors' ] [ 'txtemail' ] = 'error' ;
$errorsExist = 1 ;
}
// validate msg
if ( ! $this -> validatemsg ( $_POST [ 'txtmsg' ] ) ) {
$_SESSION [ 'errors' ] [ 'txtmsg' ] = 'error' ;
$errorsExist = 1 ;
}
// if no errors are found
if ( $errorsExist == 0 ) {
return 'index.php?nav=guestbook&state=ADD' ;
} else {
// if errors are found, save current input
foreach ( $_POST as $key => $value ) {
$_SESSION [ 'values' ] [ $key ] = $_POST [ $key ] ;
}
return 'index.php?nav=guestbook' ;
}
}
?>
De functie om de website te controleren, opgenomen in de class
<?php
public function validatewebsite($value){
// kijk of het wel is ingevuld, anders negeren
if(!empty($_POST['txtwww'])){
if(!empty($_POST['txtwww'])){
// trim and escape
$value = trim($value);
// kijk of er http:// voor staat
if(substr($value, 0, 7) != 'http://'){
$value = 'http://'.$value;
}
}
return (!eregi('^http://.[a-z0-9\./_-]+\.[a-z]{2,4}$', $value)) ? 0 : 1;
}
}
?>
<?php
public function validatewebsite( $value ) {
// kijk of het wel is ingevuld, anders negeren
if ( ! empty ( $_POST [ 'txtwww' ] ) ) {
if ( ! empty ( $_POST [ 'txtwww' ] ) ) { // trim and escape
// kijk of er http:// voor staat
if ( substr ( $value , 0 , 7 ) != 'http://' ) { $value = 'http://' . $value ;
}
}
return ( ! eregi ( '^http://.[a-z0-9\./_-]+\.[a-z]{2,4}$' , $value ) ) ?
0 : 1 ; }
}
?>
Ik denk dat het hier in zit, mochten we er toch niet uitkomen, zal het toch even moeten wachten.. ik zit namelijk niet thuis, maar op de camping
Grayen - 25/07/2006 22:22
PHP ver gevorderde
is het niet:
if(isset($_POST['txtwww']) && $_POST['txtwww'] == 'hidden'){
de rest
}
if ( isset ( $_POST [ 'txtwww' ] ) && $_POST [ 'txtwww' ] == 'hidden' ) { de rest
}
anders weet ik het niet, want hier laat je alleen zien wat de class inhoud, en hoe de errors worden verwerkt en hoe de sessies worden aangemaakt. dus uit dit stuk script kan ik moeilijk zeggen wat nou de waarde is, je zou denken dat hij gewoon leeg is als je hem niet invult in je formulier, check ander bij je andere functies of je daar ook nog iets doet met $_POST['txtwww']
Explosive - 27/07/2006 16:31
Lid
Sorry dit lost ook het probeem niet op. Ik heb geprobeerd om de code te posten op plaatscode.be, maar die geeft error's ik heb steeds netwerk error. Zal wel aan me verbinding liggen.
Gesponsorde links
Dit onderwerp is gesloten .