Changeset 612

Show
Ignore:
Timestamp:
10/16/07 01:03:44 (1 year ago)
Author:
laurentj
Message:

fixed bugs #297 and #304: bad validation on mail and url in jforms.js and jFilter::isEmail

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/1.0beta3.x/lib/jelix-www/js/jforms.js

    r610 r612  
    181181                            ok = true; 
    182182                        break; 
    183                     /*case 'url' : 
    184                         ok = (val.search(/^$/) != -1) 
    185                         break;*/ 
     183                    case 'url' : 
     184                        ok = (val.search(/^[a-z]+:\/\/((((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\-])+\.)+[A-Za-z\-]+))((\/)|$)/) != -1) 
     185                        break; 
    186186                    case 'email' : 
    187                         ok = (val.search(/^[A-Z0-9][A-Z0-9_\-]*(\.[A-Z0-9][A-Z0-9_\-]*)*@[A-Z0-9][A-Z0-9_\-]*(\.[A-Z0-9][A-Z0-9_\-]+)+$/i) != -1) 
     187                        ok = (val.search(/^((\"[^\"f\n\r\t\b]+\")|([\w\!\#\$\%\&\'\*\+\-\~\/\^\`\|\{\}]+(\.[\w\!\#\$\%\&\'\*\+\-\~\/\^\`\|\{\}]+)*))@((\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\-])+\.)+[A-Za-z\-]+))$/) != -1) 
    188188                        break; 
    189189                    case 'ipv4' : 
  • branches/1.0beta3.x/lib/jelix-www/js/jforms.js

    r610 r612  
    181181                            ok = true; 
    182182                        break; 
    183                     /*case 'url' : 
    184                         ok = (val.search(/^$/) != -1) 
    185                         break;*/ 
     183                    case 'url' : 
     184                        ok = (val.search(/^[a-z]+:\/\/((((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\-])+\.)+[A-Za-z\-]+))((\/)|$)/) != -1) 
     185                        break; 
    186186                    case 'email' : 
    187                         ok = (val.search(/^[A-Z0-9][A-Z0-9_\-]*(\.[A-Z0-9][A-Z0-9_\-]*)*@[A-Z0-9][A-Z0-9_\-]*(\.[A-Z0-9][A-Z0-9_\-]+)+$/i) != -1) 
     187                        ok = (val.search(/^((\"[^\"f\n\r\t\b]+\")|([\w\!\#\$\%\&\'\*\+\-\~\/\^\`\|\{\}]+(\.[\w\!\#\$\%\&\'\*\+\-\~\/\^\`\|\{\}]+)*))@((\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\-])+\.)+[A-Za-z\-]+))$/) != -1) 
    188188                        break; 
    189189                    case 'ipv4' : 
  • branches/1.0beta3.x/lib/jelix/utils/jFilter.class.php

    r609 r612  
    175175        return filter_var($val, FILTER_VALIDATE_EMAIL); 
    176176#else 
    177         return preg_match('/^[A-Z0-9][A-Z0-9_\-]*(\.[A-Z0-9][A-Z0-9_\-]*)*@[A-Z0-9][A-Z0-9_\-]*(\.[A-Z0-9][A-Z0-9_\-]+)+$/i',$val); 
     177        return preg_match("/^((\\\"[^\\\"\\f\\n\\r\\t\\b]+\\\")|([\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\~\\/\\^\\`\\|\\{\\}]+(\\.[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\~\\/\\^\\`\\|\\{\\}]+)*))@((\\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\\-])+\\.)+[A-Za-z\\-]+))$/",$val); 
    178178#endif 
    179179    } 
  • branches/1.0beta3.x/lib/jelix/utils/jFilter.class.php

    r609 r612  
    175175        return filter_var($val, FILTER_VALIDATE_EMAIL); 
    176176#else 
    177         return preg_match('/^[A-Z0-9][A-Z0-9_\-]*(\.[A-Z0-9][A-Z0-9_\-]*)*@[A-Z0-9][A-Z0-9_\-]*(\.[A-Z0-9][A-Z0-9_\-]+)+$/i',$val); 
     177        return preg_match("/^((\\\"[^\\\"\\f\\n\\r\\t\\b]+\\\")|([\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\~\\/\\^\\`\\|\\{\\}]+(\\.[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\~\\/\\^\\`\\|\\{\\}]+)*))@((\\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\\-])+\\.)+[A-Za-z\\-]+))$/",$val); 
    178178#endif 
    179179    } 
  • branches/1.0beta3.x/testapp/modules/jelix_tests/tests/utils.jfilter.html_cli.php

    r468 r612  
    138138    } 
    139139 
     140    public function testEmail(){ 
     141        $this->assertFalse(jFilter::isEmail('toto@mail'), "isEmail('toto@mail')"); 
     142        $this->assertTrue(jFilter::isEmail('toto@mail.com'), "isEmail('toto@mail.com')"); 
     143        $this->assertTrue(jFilter::isEmail('toto@mail.poer.dsmlqsd'), "isEmail('toto@mail.poer.dsmlqsd')"); 
     144        $this->assertTrue(jFilter::isEmail('"bob john"@mail.com'), "isEmail('\"bob john\"@mail.com')"); 
     145        $this->assertTrue(jFilter::isEmail('bob.john@mail.com'), "isEmail('bob.john@mail.com')"); 
     146        $this->assertTrue(jFilter::isEmail('hello{john}t#r+u&c@mail.com'), "isEmail('hello{john}t#r+u&c@mail.com')"); 
     147        $this->assertTrue(jFilter::isEmail('bob@123.23.56.43'), "isEmail('bob@123.23.56.43')"); 
     148    } 
    140149} 
    141150 
  • branches/1.0beta3.x/testapp/modules/jelix_tests/tests/utils.jfilter.html_cli.php

    r468 r612  
    138138    } 
    139139 
     140    public function testEmail(){ 
     141        $this->assertFalse(jFilter::isEmail('toto@mail'), "isEmail('toto@mail')"); 
     142        $this->assertTrue(jFilter::isEmail('toto@mail.com'), "isEmail('toto@mail.com')"); 
     143        $this->assertTrue(jFilter::isEmail('toto@mail.poer.dsmlqsd'), "isEmail('toto@mail.poer.dsmlqsd')"); 
     144        $this->assertTrue(jFilter::isEmail('"bob john"@mail.com'), "isEmail('\"bob john\"@mail.com')"); 
     145        $this->assertTrue(jFilter::isEmail('bob.john@mail.com'), "isEmail('bob.john@mail.com')"); 
     146        $this->assertTrue(jFilter::isEmail('hello{john}t#r+u&c@mail.com'), "isEmail('hello{john}t#r+u&c@mail.com')"); 
     147        $this->assertTrue(jFilter::isEmail('bob@123.23.56.43'), "isEmail('bob@123.23.56.43')"); 
     148    } 
    140149} 
    141150 
  • trunk/lib/jelix-www/js/jforms.js

    r610 r612  
    181181                            ok = true; 
    182182                        break; 
    183                     /*case 'url' : 
    184                         ok = (val.search(/^$/) != -1) 
    185                         break;*/ 
     183                    case 'url' : 
     184                        ok = (val.search(/^[a-z]+:\/\/((((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\-])+\.)+[A-Za-z\-]+))((\/)|$)/) != -1) 
     185                        break; 
    186186                    case 'email' : 
    187                         ok = (val.search(/^[A-Z0-9][A-Z0-9_\-]*(\.[A-Z0-9][A-Z0-9_\-]*)*@[A-Z0-9][A-Z0-9_\-]*(\.[A-Z0-9][A-Z0-9_\-]+)+$/i) != -1) 
     187                        ok = (val.search(/^((\"[^\"f\n\r\t\b]+\")|([\w\!\#\$\%\&\'\*\+\-\~\/\^\`\|\{\}]+(\.[\w\!\#\$\%\&\'\*\+\-\~\/\^\`\|\{\}]+)*))@((\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\-])+\.)+[A-Za-z\-]+))$/) != -1) 
    188188                        break; 
    189189                    case 'ipv4' : 
  • trunk/lib/jelix-www/js/jforms.js

    r610 r612  
    181181                            ok = true; 
    182182                        break; 
    183                     /*case 'url' : 
    184                         ok = (val.search(/^$/) != -1) 
    185                         break;*/ 
     183                    case 'url' : 
     184                        ok = (val.search(/^[a-z]+:\/\/((((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\-])+\.)+[A-Za-z\-]+))((\/)|$)/) != -1) 
     185                        break; 
    186186                    case 'email' : 
    187                         ok = (val.search(/^[A-Z0-9][A-Z0-9_\-]*(\.[A-Z0-9][A-Z0-9_\-]*)*@[A-Z0-9][A-Z0-9_\-]*(\.[A-Z0-9][A-Z0-9_\-]+)+$/i) != -1) 
     187                        ok = (val.search(/^((\"[^\"f\n\r\t\b]+\")|([\w\!\#\$\%\&\'\*\+\-\~\/\^\`\|\{\}]+(\.[\w\!\#\$\%\&\'\*\+\-\~\/\^\`\|\{\}]+)*))@((\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\-])+\.)+[A-Za-z\-]+))$/) != -1) 
    188188                        break; 
    189189                    case 'ipv4' : 
  • trunk/lib/jelix/utils/jFilter.class.php

    r609 r612  
    175175        return filter_var($val, FILTER_VALIDATE_EMAIL); 
    176176#else 
    177         return preg_match('/^[A-Z0-9][A-Z0-9_\-]*(\.[A-Z0-9][A-Z0-9_\-]*)*@[A-Z0-9][A-Z0-9_\-]*(\.[A-Z0-9][A-Z0-9_\-]+)+$/i',$val); 
     177        return preg_match("/^((\\\"[^\\\"\\f\\n\\r\\t\\b]+\\\")|([\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\~\\/\\^\\`\\|\\{\\}]+(\\.[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\~\\/\\^\\`\\|\\{\\}]+)*))@((\\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\\-])+\\.)+[A-Za-z\\-]+))$/",$val); 
    178178#endif 
    179179    } 
  • trunk/lib/jelix/utils/jFilter.class.php

    r609 r612  
    175175        return filter_var($val, FILTER_VALIDATE_EMAIL); 
    176176#else 
    177         return preg_match('/^[A-Z0-9][A-Z0-9_\-]*(\.[A-Z0-9][A-Z0-9_\-]*)*@[A-Z0-9][A-Z0-9_\-]*(\.[A-Z0-9][A-Z0-9_\-]+)+$/i',$val); 
     177        return preg_match("/^((\\\"[^\\\"\\f\\n\\r\\t\\b]+\\\")|([\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\~\\/\\^\\`\\|\\{\\}]+(\\.[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\~\\/\\^\\`\\|\\{\\}]+)*))@((\\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\\-])+\\.)+[A-Za-z\\-]+))$/",$val); 
    178178#endif 
    179179    } 
  • trunk/testapp/modules/jelix_tests/tests/utils.jfilter.html_cli.php

    r468 r612  
    138138    } 
    139139 
     140    public function testEmail(){ 
     141        $this->assertFalse(jFilter::isEmail('toto@mail'), "isEmail('toto@mail')"); 
     142        $this->assertTrue(jFilter::isEmail('toto@mail.com'), "isEmail('toto@mail.com')"); 
     143        $this->assertTrue(jFilter::isEmail('toto@mail.poer.dsmlqsd'), "isEmail('toto@mail.poer.dsmlqsd')"); 
     144        $this->assertTrue(jFilter::isEmail('"bob john"@mail.com'), "isEmail('\"bob john\"@mail.com')"); 
     145        $this->assertTrue(jFilter::isEmail('bob.john@mail.com'), "isEmail('bob.john@mail.com')"); 
     146        $this->assertTrue(jFilter::isEmail('hello{john}t#r+u&c@mail.com'), "isEmail('hello{john}t#r+u&c@mail.com')"); 
     147        $this->assertTrue(jFilter::isEmail('bob@123.23.56.43'), "isEmail('bob@123.23.56.43')"); 
     148    } 
    140149} 
    141150 
  • trunk/testapp/modules/jelix_tests/tests/utils.jfilter.html_cli.php

    r468 r612  
    138138    } 
    139139 
     140    public function testEmail(){ 
     141        $this->assertFalse(jFilter::isEmail('toto@mail'), "isEmail('toto@mail')"); 
     142        $this->assertTrue(jFilter::isEmail('toto@mail.com'), "isEmail('toto@mail.com')"); 
     143        $this->assertTrue(jFilter::isEmail('toto@mail.poer.dsmlqsd'), "isEmail('toto@mail.poer.dsmlqsd')"); 
     144        $this->assertTrue(jFilter::isEmail('"bob john"@mail.com'), "isEmail('\"bob john\"@mail.com')"); 
     145        $this->assertTrue(jFilter::isEmail('bob.john@mail.com'), "isEmail('bob.john@mail.com')"); 
     146        $this->assertTrue(jFilter::isEmail('hello{john}t#r+u&c@mail.com'), "isEmail('hello{john}t#r+u&c@mail.com')"); 
     147        $this->assertTrue(jFilter::isEmail('bob@123.23.56.43'), "isEmail('bob@123.23.56.43')"); 
     148    } 
    140149} 
    141150 
Download in other formats: Unified Diff Zip Archive