Mysidia Adoptables Support Forum  

Home Community Mys-Script Creative Off-Topic
Go Back   Mysidia Adoptables Support Forum > Mysidia Adoptables > Questions and Supports

Notices

Reply
 
Thread Tools Display Modes
  #1  
Old 05-06-2017, 08:38 PM
aquapyrofan aquapyrofan is offline
Member
 
Join Date: Apr 2017
Posts: 48
Gender: Unknown/Other
Credits: 8,431
aquapyrofan is on a distinguished road
Default Data validation on Birthdate and username?

Lately I've had some issues on my site with people either having malformed (as in, way too many slashes), improbable/impossible birth years (such as 1900 or 1003), and usernames with special characters (which probably won't validate against PMs and such properly). Is there any way to make sure the information they give is at least in the right format and/or the birth year is plausible before they sign up?
Reply With Quote
  #2  
Old 05-06-2017, 09:20 PM
Dinocanid's Avatar
Dinocanid Dinocanid is offline
Member
 
Join Date: Aug 2016
Location: Maryland, USA
Posts: 516
Gender: Unknown/Other
Credits: 65,200
Dinocanid is on a distinguished road
Default

I'm not too sure on the date checking, but you should be able to prevent special characters in usernames by adding this under "protected function usernamevalidate" in class_registervalidator.php:
PHP Code:
if(preg_match('/[\'^£$%&*()}{@#~?><>,|=_+¬-]/'$username)){

         
$this->seterror("Your username cannot contain special characters!");

         return 
FALSE;

      } 
So it looks like this:
PHP Code:
protected function usernamevalidate($username ""){
      
// The username validator, note its a bit complicate here due to the different mechanism of username check for register and other validators
      
$lang Registry::get("lang");
      if(!
$this->emptyvalidate($username)){
         
$this->seterror("The field Username is Empty.");
         return 
FALSE;
      }
      if(
$username == "SYSTEM"){
         
$this->seterror("Cannot use SYSTEM as username.");
         return 
FALSE;
      }
      if(
preg_match('/[\'^£$%&*()}{@#~?><>,|=_+¬-]/'$username)){
         
$this->seterror("Your username cannot contain special characters!");
         return 
FALSE;
      }
      
$username = (empty($username))?$this->value['username']:$username;      
      
$userexist $this->datavalidate("users", array("username"), "username = '{$username}'");
      if(
$userexist == TRUE){
         
$this->seterror($lang->user);
         return 
FALSE;
      }
      else return 
TRUE;
  } 
I haven't tried it, but I got the answer from here:
http://stackoverflow.com/questions/3...characters-php

EDIT: Thought I should say that this won't/can't do anything about users who already registered with special characters; only new ones.
__________________

Last edited by Dinocanid; 05-06-2017 at 09:37 PM.
Reply With Quote
  #3  
Old 06-05-2017, 02:48 AM
KatFennec's Avatar
KatFennec KatFennec is offline
Member
 
Join Date: Apr 2017
Posts: 57
Gender: Female
Credits: 7,842
KatFennec is on a distinguished road
Default

The birthday is actually pretty simple.
You just need to drop
PHP Code:
elseif(preg_match('/[01]\d\/[0123]\d\/19\d\d|20[012]\d/'$birthday)){

         
$this->seterror("Please enter your birthdate in the format provided.");

         return 
FALSE;

      } 
into the birthdayvalidate function in the same file.

EDIT:
It looks like I was wrong. You need to partially re-write the birthdayvalidate function like so:
PHP Code:
protected function birthdayvalidate($birthday ""){
      
$lang Registry::get("lang");
      if(empty(
$this->value['birthday'])){
         
$this->seterror($lang->birthdayTRUE);
         return 
FALSE;
      }
      if(
preg_match_all('/[01]\d\/[0123]\d\/19\d\d|20[012]\d/'$birthday)){

         

         return 
TRUE;

      }
      else{
         
$this->seterror("Please enter your birthdate in the format provided.");
          return 
FALSE;
      };
  } 
__________________

Last edited by KatFennec; 06-05-2017 at 03:07 AM. Reason: Mistake in code
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -5. The time now is 03:57 AM.

Currently Active Users: 9803 (0 members and 9803 guests)
Threads: 4,080, Posts: 32,024, Members: 2,016
Welcome to our newest members, jolob.
BETA





What's New?

What's Hot?

What's Popular?


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.
vBCommerce I v2.0.0 Gold ©2010, PixelFX Studios
vBCredits I v2.0.0 Gold ©2010, PixelFX Studios
Emoticons by darkmoon3636