login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[PHP][Check functie] Fout met eregi()

Offline Explosive - 24/07/2006 19:28
Avatar van ExplosiveLid 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:
  1. // validate website
  2. private function validatewebsite($value){
  3. // trim and escape
  4. $value = trim($value);
  5. return (!eregi('^www\\.[A-Za-z0-9_-]+[A-Za-z]{2,4}$', $value)) ? 0 : 1;
  6. }

Dit stukje code moet nakijken of er wel een geldige website is ingevuld. Ik krijg het echter niet werkend. 

20 antwoorden

Gesponsorde links
Offline marten - 24/07/2006 19:32 (laatste wijziging 24/07/2006 19:32)
Avatar van marten Beheerder probeer deze eens

  1. (ftp|http):\/\/([_a-z\d\-]+(\.[_a-z\d\-]+)+)(([_a-z\d\-\\\.\/]+[_a-z\d\-\\\/])+)
Offline Explosive - 24/07/2006 20:37 (laatste wijziging 24/07/2006 22:52)
Avatar van Explosive Lid Marten, Ik heb jou code ingevoegd:
  1. <?php private function validatewebsite($value){
  2. // trim and escape
  3. $value = trim($value);
  4. return (!eregi('^(ftp|http)://([_a-zd-]+(.[_a-zd-]+)+)(([_a-zd-./]+[_a-zd-/])+$', $value)) ? 0 : 1;
  5. }?>

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?
Offline Dolfje - 24/07/2006 23:41 (laatste wijziging 24/07/2006 23:42)
Avatar van Dolfje Gouden medailleGouden medailleGouden medaille

PHP ver gevorderde
Je sluit ze niet allemaal af:
^(ftp|http)://([_a-zd-]+(.[_a-zd-]+)+)(([_a-zd-./]+[_a-zd-/])->)<-+$
Er moet nog een ) bij.
Offline Explosive - 25/07/2006 15:01 (laatste wijziging 25/07/2006 19:45)
Avatar van Explosive 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
Offline Grayen - 25/07/2006 19:52
Avatar van Grayen PHP ver gevorderde
  1. // validate website
  2. private function validatewebsite($value){
  3. // trim and escape
  4. $value = trim($value);
  5. return (!eregi('^http://.[a-z0-9\./]+\.[a-z]{2,4}$', $value)) ? 0 : 1;
  6. }


deze gebruik ik
Offline Explosive - 25/07/2006 20:20 (laatste wijziging 25/07/2006 20:25)
Avatar van Explosive Lid Als ik dan http://www.d-power.nl laat valideren, is die niet geldig.

me code nu:
  1. private function validatewebsite($value){
  2. // trim and escape
  3. $value = trim($value);
  4. return (!eregi('^http://.[a-z0-9\./]+\.[a-z]{2,4}$', $value)) ? 0 : 1;
  5. }


Ik vraag me eigenlijk af of ik
Citaat:
? 0 : 1;
dit deel wel goed heb

EDIT: Nu werkt het wel ik heb -_ toegevoegd
me code nu:
  1. return (!eregi('^http://.[a-z0-9\./_-]+\.[a-z]{2,4}$', $value)) ? 0 : 1;
Offline Rens - 25/07/2006 20:23
Avatar van Rens Gouden medaille

Crew algemeen
Dat is niet eens nodig.
  1. private function validatewebsite($value){
  2. // trim and escape
  3. $value = trim($value);
  4. return (eregi('^http://.[a-z0-9\./]+\.[a-z]{2,4}$', $value));
  5. }

Als je van die private nu eens een public maakt?
Offline Explosive - 25/07/2006 20:27
Avatar van Explosive Lid Allemaal heel erg bdenkt voor de hulp! Het heeft me veel geholpen:!: 

Admins / mods: Topic kan wat mij beterft op slot
Offline Rens - 25/07/2006 20:28
Avatar van Rens Gouden medaille

Crew algemeen
Ook even zeggen wat nu de fout was + de oplossing...
Offline Explosive - 25/07/2006 20:33
Avatar van Explosive 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.



Offline Grayen - 25/07/2006 20:38 (laatste wijziging 25/07/2006 20:38)
Avatar van Grayen PHP ver gevorderde
  1. <?php
  2. if(!empty($_POST['website'])){
  3. if(substr($_POST['website'], 0, 7) != 'http://'){
  4. $sWebsite = 'http://'.$_POST['website'];
  5. }
  6. if(!ereg('^http://.[a-zA-Z0-9\./]+\.[a-z]{2,4}$', $sWebsite)){
  7. $sError .= '<li>U heeft een ongeldig website url ingevuld in het veld <strong>website</strong>.</li>'."\n";
  8. }
  9. }
  10. ?>


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)
Offline Explosive - 25/07/2006 21:01
Avatar van Explosive Lid Dank je Grayen, dit stuk werkt nu perfect.

Nu ga ik nog even kijken hoe ik de verplichting ongedaan krijg.
Offline Grayen - 25/07/2006 21:04 (laatste wijziging 25/07/2006 21:04)
Avatar van Grayen PHP ver gevorderde heb ik al staan if(!empty($_POST['website'])){
de rest...
Offline Explosive - 25/07/2006 21:12
Avatar van Explosive Lid Het werkt niet met (!empty()) omdat er altijd iets in de waarde word gezet.. het is echter nu even de vraag wat ook alweer 

Het maakt namelijk deel uit van een AJAX en PHP form validatie dus zowel AJAX als php maakt gebruik van de funcite.. dat had er mee te maken dat de sessie $_session['value']['txtwww'] altijd een waarde had. En de $_POST['txtwww'] ook.

Ik ben het nu even aan het uitzoeken. Ik probeerde al in de functie een echo line, maar dat werkt niet 
Offline Grayen - 25/07/2006 21:18 (laatste wijziging 25/07/2006 21:27)
Avatar van Grayen 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
Offline Explosive - 25/07/2006 21:35
Avatar van Explosive Lid Ik heb het wel met hoofdletters, had alleen even geen zin om me capslock aan te zetten 
Offline Grayen - 25/07/2006 21:41
Avatar van Grayen PHP ver gevorderde plaats ander het stuk script waarin ergens die waarde aangegeven staat in plaatscode.be.
Offline Explosive - 25/07/2006 22:07 (laatste wijziging 25/07/2006 22:11)
Avatar van Explosive 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
  1. <?php
  2. // Class supports AJAX and web form validating
  3. class Validate {
  4.  
  5. // validates all form fields on form submit
  6. public function ValidatePHP(){
  7. // error flag, becomes 1 when found.
  8.  
  9. $errorsExist = 0;
  10. // clears the error flag.
  11. if(isset($_SESSION['errors']))
  12. unset($_SESSION['error']);
  13.  
  14. // standaard is alles valid
  15. $_SESSION['errors']['txtnaam'] = 'hidden';
  16. $_SESSION['errors']['txtwww'] = 'hidden';
  17. $_SESSION['errors']['txtemail'] = 'hidden';
  18. $_SESSION['errors']['txtmsg'] = 'hidden';
  19.  
  20. // validate naam
  21. if(!$this->validatenaam($_POST['txtnaam'])){
  22. $_SESSION['errors']['txtnaam'] = 'error';
  23. $errorsExist = 1;
  24. }
  25.  
  26. // validate website
  27. if(!$this->validatewebsite($_POST['txtwww'])){
  28. $_SESSION['errors']['txtwww'] = 'error';
  29. $errorsExist = 1;
  30. }
  31.  
  32. // validate email
  33. if(!$this->validateemail($_POST['txtemail'])){
  34. $_SESSION['errors']['txtemail'] = 'error';
  35. $errorsExist = 1;
  36. }
  37.  
  38. // validate msg
  39. if(!$this->validatemsg($_POST['txtmsg'])){
  40. $_SESSION['errors']['txtmsg'] = 'error';
  41. $errorsExist = 1;
  42. }
  43. // if no errors are found
  44. if($errorsExist == 0) {
  45. return 'index.php?nav=guestbook&state=ADD';
  46. } else {
  47. // if errors are found, save current input
  48. foreach ($_POST as $key => $value) {
  49. $_SESSION['values'][$key] = $_POST[$key];
  50. }
  51. return 'index.php?nav=guestbook';
  52. }
  53. }
  54. ?>


De functie om de website te controleren, opgenomen in de class
  1. <?php
  2. public function validatewebsite($value){
  3. // kijk of het wel is ingevuld, anders negeren
  4. if(!empty($_POST['txtwww'])){
  5.  
  6. if(!empty($_POST['txtwww'])){
  7. // trim and escape
  8. $value = trim($value);
  9. // kijk of er http:// voor staat
  10. if(substr($value, 0, 7) != 'http://'){
  11. $value = 'http://'.$value;
  12. }
  13. }
  14. return (!eregi('^http://.[a-z0-9\./_-]+\.[a-z]{2,4}$', $value)) ? 0 : 1;
  15. }
  16. }
  17. ?>


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 
Offline Grayen - 25/07/2006 22:22
Avatar van Grayen PHP ver gevorderde is het niet:
  1. if(isset($_POST['txtwww']) && $_POST['txtwww'] == 'hidden'){
  2. de rest
  3. }


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']
Offline Explosive - 27/07/2006 16:31
Avatar van Explosive 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.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.303s