How to force username format?

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

djdubuque
Forum Newbie
Posts: 10
Joined: Sat Sep 12, 2009 6:53 pm

How to force username format?

Post by djdubuque »

Could someone help on this?
User avatar
requinix
Spammer :|
Posts: 6617
Joined: Wed Oct 15, 2008 2:35 am
Location: WA, USA

Re: How to force username format?

Post by requinix »

If you want help you'll have to show some effort.

For instance, the effort required to describe the question or problem in detail.
djdubuque
Forum Newbie
Posts: 10
Joined: Sat Sep 12, 2009 6:53 pm

Re: How to force username format?

Post by djdubuque »

tasairis wrote:If you want help you'll have to show some effort.

For instance, the effort required to describe the question or problem in detail.

Not sure what your asking, I assumed that all that would be needed is some code that will look at the username and compare it to the restrictions setup.
User avatar
requinix
Spammer :|
Posts: 6617
Joined: Wed Oct 15, 2008 2:35 am
Location: WA, USA

Re: How to force username format?

Post by requinix »

One more time?
tasairis wrote:describe the question or problem in detail.
User avatar
John Cartwright
Site Admin
Posts: 11470
Joined: Tue Dec 23, 2003 2:10 am
Location: Toronto
Contact:

Re: How to force username format?

Post by John Cartwright »

djdubuque wrote:I assumed that all that would be needed is some code that will look at the username and compare it to the restrictions setup.
You assume too much :)

What are these "requirements"? What have you tried? Post some code.

"Help us help you" ..as they say
djdubuque
Forum Newbie
Posts: 10
Joined: Sat Sep 12, 2009 6:53 pm

Re: How to force username format?

Post by djdubuque »

I guess I should have mentioned that I'm new at PHP and work with what I can find already available. I take current code and find ways to improve it. But I have no experience in coding. I have a basic forum that is already running, I would like to ad a bit of code that will check the name that is entered in the registration and insure that it conforms to the restrictions setup in the code.
User avatar
John Cartwright
Site Admin
Posts: 11470
Joined: Tue Dec 23, 2003 2:10 am
Location: Toronto
Contact:

Re: How to force username format?

Post by John Cartwright »

.... what are the restrictions setup in the code?

Are you trying to validate on the client side before sending the input to your php script?

I just want to make this clear, we are not here to do the work for you. If you cannot post clear and concise questions and respond to our inquiries, then we cannot be of any help to you.
djdubuque
Forum Newbie
Posts: 10
Joined: Sat Sep 12, 2009 6:53 pm

Re: How to force username format?

Post by djdubuque »

Here is the code that is used in the registration file.

Code: Select all

<?php
if(!defined('IN_INDEX'))
 {
  header('Location: ../index.php');
  exit;
 }
 
$smarty->config_load($settings['language_file'],'emails');
$lang = $smarty->get_config_vars();
 
// remove not activated user accounts:
@mysql_query("DELETE FROM ".$db_settings['userdata_table']." WHERE registered < (NOW() - INTERVAL 24 HOUR) AND activate_code != '' AND logins=0", $connid);
 
if(empty($_SESSION[$settings['session_prefix'].'user_id']) && $settings['captcha_register']>0)
 {
  require('modules/captcha/captcha.php');
  $captcha = new Captcha();
 }
 
if(isset($_REQUEST['action'])) $action = $_REQUEST['action'];
else $action = 'main';
 
if(isset($_POST['register_submit'])) $action = 'register_submitted';
if(isset($_GET['key'])) $action = 'activate';
 
switch($action)
 {
  case 'main':
   if($settings['register_mode']<2)
    {
     if($settings['terms_of_use_agreement']==1) $smarty->assign("terms_of_use_agreement",true);
     $smarty->assign('subnav_location','subnav_register');
     $smarty->assign('subtemplate','register.tpl.inc');
     $template = 'main.tpl';
    }
   else
    {
     $smarty->assign('lang_section','register');
     $smarty->assign('message','register_only_by_admin');
     $smarty->assign('subnav_location','subnav_register');
     $smarty->assign('subtemplate','info.tpl.inc');
     $template = 'main.tpl';
    }
  break;
  case 'register_submitted':
   if($settings['register_mode']>1) die('No authorisation!');
   else
    {
     $new_user_name = trim($_POST['new_user_name']);
     $new_user_email = trim($_POST['new_user_email']);
     $reg_pw = $_POST['reg_pw'];
     $reg_pw_conf = $_POST['reg_pw_conf'];
     if(isset($_POST['terms_of_use_agree']) && $_POST['terms_of_use_agree']==1) $terms_of_use_agree=1; else $terms_of_use_agree=0;
     
     // form complete?
     if($new_user_name=='' || $new_user_email=='' || $reg_pw=='' || $reg_pw_conf=='') $errors[] = 'error_form_uncomplete';
 
     if(empty($errors))
      {
       // password too short?
       if(my_strlen($reg_pw, $lang['charset']) < $settings['min_pw_length']) $errors[] = 'error_password_too_short';
       // password and repeatet Password equal?
       if($reg_pw != $reg_pw_conf) $errors[] = 'error_pw_conf_wrong';
       // name too long?
       if(my_strlen($new_user_name, $lang['charset']) > $settings['username_maxlength']) $errors[] = 'error_name_too_long';
       // e-mail address too long?
       if(my_strlen($new_user_email, $lang['charset']) > $settings['email_maxlength']) $errors[] = 'error_email_too_long';
 
       // word in username too long?
       $too_long_word = too_long_word($new_user_name,$settings['name_word_maxlength']);
       if($too_long_word) $errors[] = 'error_word_too_long';
 
       // look if name already exists:
       $name_result = mysql_query("SELECT user_name FROM ".$db_settings['userdata_table']." WHERE lower(user_name) = '".mysql_real_escape_string(my_strtolower($new_user_name, $lang['charset']))."'", $connid) or raise_error('database_error',mysql_error());
       if(mysql_num_rows($name_result)>0) $errors[] = 'user_name_already_exists';
       mysql_free_result($name_result);
 
       // look, if e-mail already exists:
       $email_result = mysql_query("SELECT user_email FROM ".$db_settings['userdata_table']." WHERE lower(user_email) = '".mysql_real_escape_string(my_strtolower($new_user_email, $lang['charset']))."'", $connid) or raise_error('database_error',mysql_error());
       if(mysql_num_rows($email_result)>0) $errors[] = 'error_email_alr_exists';
       mysql_free_result($email_result);
 
       // e-mail correct?
       if(!is_valid_email($new_user_email)) $errors[] = 'error_email_wrong';
      
       if($settings['terms_of_use_agreement']==1 && $terms_of_use_agree!=1) $errors[] = 'terms_of_use_agree_error_register';
      }
 
     // check for not accepted words:
     $checkstring = my_strtolower($new_user_name.' '.$new_user_email, $lang['charset']);
     $not_accepted_words = get_not_accepted_words($checkstring);
     if($not_accepted_words!=false) 
      {
       $errors[] = 'error_reg_not_accepted_word';
      }
 
     // CAPTCHA check:
     if(empty($errors) && empty($_SESSION[$settings['session_prefix'].'user_id']) && $settings['captcha_register']>0)
      {
       if($settings['captcha_register']==2)
        {
         if(empty($_SESSION['captcha_session']) || empty($_POST['captcha_code']) || $captcha->check_captcha($_SESSION['captcha_session'],$_POST['captcha_code'])!=true) $errors[] = 'captcha_check_failed';
        }
       else
        {
         if(empty($_SESSION['captcha_session']) || empty($_POST['captcha_code']) || $captcha->check_math_captcha($_SESSION['captcha_session'][2],$_POST['captcha_code'])!=true) $errors[] = 'captcha_check_failed';
        }
       unset($_SESSION['captcha_session']);
      }       
 
     // save user if no errors:
     if(empty($errors))
      {
       $pw_hash = generate_pw_hash($reg_pw);
       $activate_code = random_string(50);
       $activate_code_hash = generate_pw_hash($activate_code);
       if($settings['register_mode']==1) $user_lock = 1;
       else $user_lock = 0;
       @mysql_query("INSERT INTO ".$db_settings['userdata_table']." (user_type, user_name, user_real_name, user_pw, user_email, user_hp, user_location, signature, profile, email_contact, last_login, last_logout, user_ip, registered, user_view, fold_threads, user_lock, auto_login_code, pwf_code, activate_code) VALUES (0,'".mysql_real_escape_string($new_user_name)."','','".mysql_real_escape_string($pw_hash)."','".mysql_real_escape_string($new_user_email)."','','','','',".$settings['default_email_contact'].",NOW(),NOW(),'".mysql_real_escape_string($_SERVER["REMOTE_ADDR"])."',NOW(),".intval($settings['default_view']).", ".intval($settings['fold_threads']).", ".$user_lock.", '', '', '".mysql_real_escape_string($activate_code_hash)."')", $connid) or raise_error('database_error',mysql_error());
 
       // get new user ID:
       $new_user_id_result = mysql_query("SELECT user_id FROM ".$db_settings['userdata_table']." WHERE user_name = '".mysql_real_escape_string($new_user_name)."' LIMIT 1", $connid);
       if (!$new_user_id_result) raise_error('database_error',mysql_error());
       $field = mysql_fetch_array($new_user_id_result);
       $new_user_id = $field['user_id'];
       mysql_free_result($new_user_id_result);
 
       // send e-mail with activation key to new user:
       $lang['new_user_email_txt'] = str_replace("[name]", $new_user_name, $lang['new_user_email_txt']);
       #$lang['new_user_email_txt'] = str_replace("[password]", $new_user_pw, $lang['new_user_email_txt']);
       $lang['new_user_email_txt'] = str_replace("[activate_link]", $settings['forum_address']."index.php?mode=register&id=".$new_user_id."&key=".$activate_code, $lang['new_user_email_txt']);
       
       $new_user_mailto = my_mb_encode_mimeheader($new_user_name, CHARSET, "Q") . " <".$new_user_email.">";
       
       if(my_mail($new_user_mailto, $lang['new_user_email_sj'], $lang['new_user_email_txt'])) $smarty->assign('message','registered');
       else $smarty->assign('message','registered_send_error');
       
       $smarty->assign('lang_section','register');
       $smarty->assign('var',htmlspecialchars($new_user_email));
       $smarty->assign('subnav_location','subnav_register');
       $smarty->assign('subtemplate','info.tpl.inc');
       $template = 'main.tpl';
      }
     else
      {
       $smarty->assign('errors',$errors);
       if(isset($too_long_word)) $smarty->assign('word',$too_long_word);
       $smarty->assign('subnav_location','subnav_register');
       $smarty->assign('subtemplate','register.tpl.inc');
       $smarty->assign('new_user_name',htmlspecialchars($new_user_name));
       $smarty->assign('new_user_email',htmlspecialchars($new_user_email));
       if($settings['terms_of_use_agreement']==1) $smarty->assign("terms_of_use_agreement",true);
       $template = 'main.tpl';
      }
    }
  break;
  case 'activate':
   if(isset($_GET['id'])) $id = intval($_GET['id']); else $error = TRUE;
   if(isset($_GET['key'])) $key = trim($_GET['key']); else $error = TRUE;
   if(empty($error))
    {
     if($id==0) $error = TRUE;
     if($key=='') $error = TRUE;
    }
   if(empty($error))
    {
     $result = mysql_query("SELECT user_name, user_email, logins, activate_code FROM ".$db_settings['userdata_table']." WHERE user_id = ".intval($id)." LIMIT 1", $connid) or raise_error('database_error',mysql_error());
     if(mysql_num_rows($result) != 1) $errors[] = true;
     $data = mysql_fetch_array($result);
     mysql_free_result($result);
    }
   if(empty($error))
    {
     if(trim($data['activate_code']) == '') $error = true;
    }
   if(empty($error))
    {
     if(is_pw_correct($key,$data['activate_code']))
      {
       @mysql_query("UPDATE ".$db_settings['userdata_table']." SET activate_code = '' WHERE user_id=".intval($id), $connid) or raise_error('database_error',mysql_error());
       
       // E-mail notification to mods and admins:
       if($data['logins']==0) // if != 0 user has changed his e-mail address
        {
         if($settings['register_mode']==1) $new_user_notif_txt = $lang['new_user_notif_txt_locked'];
         else $new_user_notif_txt = $lang['new_user_notif_txt'];
         $new_user_notif_txt = str_replace("[name]", $data['user_name'], $new_user_notif_txt);
         $new_user_notif_txt = str_replace("[email]", $data['user_email'], $new_user_notif_txt);
         $new_user_notif_txt = str_replace("[user_link]", $settings['forum_address']."index.php?mode=user&show_user=".$id, $new_user_notif_txt);
         
         // who gets a notification?
         $admin_result = @mysql_query("SELECT user_name, user_email FROM ".$db_settings['userdata_table']." WHERE user_type>0 AND new_user_notification=1", $connid);
         if(!$admin_result) raise_error('database_error',mysql_error());
         while($admin_array = mysql_fetch_array($admin_result))
          {
           $ind_reg_emailbody = str_replace("[recipient]", $admin_array['user_name'], $new_user_notif_txt);
           $admin_mailto = my_mb_encode_mimeheader($admin_array['user_name'], CHARSET, "Q")." <".$admin_array['user_email'].">";
           my_mail($admin_mailto, $lang['new_user_notif_sj'], $ind_reg_emailbody);
          }
        }
       if($settings['register_mode']==1) header("Location: index.php?mode=login&login_message=account_activated_but_locked");
       else header("Location: index.php?mode=login&login_message=account_activated");
       exit;
      }
     else $error = true;
    }
   if(isset($error))
    {
     $smarty->assign('lang_section','register');
     $smarty->assign('message','activation_failed');
     $smarty->assign('subnav_location','subnav_register');
     $smarty->assign('subtemplate','info.tpl.inc');
     $template = 'main.tpl';
    }
  break;
 }
 
// CAPTCHA:
if(empty($_SESSION[$settings['session_prefix'].'user_id']) && $settings['captcha_register']>0)
 {
  if($settings['captcha_register']==2)
   {
    $_SESSION['captcha_session'] = $captcha->generate_code();
   } 
  else 
   {
    $_SESSION['captcha_session'] = $captcha->generate_math_captcha();
    $captcha_tpl['number_1'] = $_SESSION['captcha_session'][0];
    $captcha_tpl['number_2'] = $_SESSION['captcha_session'][1];
   } 
  $captcha_tpl['session_name'] = session_name();
  $captcha_tpl['session_id'] = session_id();
  $captcha_tpl['type'] = $settings['captcha_register'];
  $smarty->assign('captcha',$captcha_tpl);
 }
?>
 
User avatar
John Cartwright
Site Admin
Posts: 11470
Joined: Tue Dec 23, 2003 2:10 am
Location: Toronto
Contact:

Re: How to force username format?

Post by John Cartwright »

You still haven't answered my questions, and consider this my last post until you can at least respond to my inquiries. Secondly, posting your entire script does not constitute effort, you should only be posting relevant sections of the code. This lack of effort will not persuade many people to help you in the future. Remember, we are all volunteers so you should make it as easy for us to evaluate your problems -- not the other way around.

Are you trying to validate this in the client side? Why can't you just allow your script to run as written? It will input all errors in your $error array, from there you can see exactly what has failed.
djdubuque
Forum Newbie
Posts: 10
Joined: Sat Sep 12, 2009 6:53 pm

Re: How to force username format?

Post by djdubuque »

No, this is running on a server. The registration currently will check to see if the username has been used, if not I would also like it to check to see that the username meets the format that I'm looking for.
if username = xyz123 then continue
if username = xyzabc then echo "this username does not conform to this forums registration requirements!
User avatar
John Cartwright
Site Admin
Posts: 11470
Joined: Tue Dec 23, 2003 2:10 am
Location: Toronto
Contact:

Re: How to force username format?

Post by John Cartwright »

Sorry, I can't be bothered with this anymore. Good luck with your issue.

If you can't answer simple questions like "what restrictions?"... then so be it.
djdubuque
Forum Newbie
Posts: 10
Joined: Sat Sep 12, 2009 6:53 pm

Re: How to force username format?

Post by djdubuque »

John Cartwright wrote:Sorry, I can't be bothered with this anymore. Good luck with your issue.

If you can't answer simple questions like "what restrictions?"... then so be it.

Get over yourself dude, I'm looking for help not over ego programmers! Have yourself a good day!
User avatar
John Cartwright
Site Admin
Posts: 11470
Joined: Tue Dec 23, 2003 2:10 am
Location: Toronto
Contact:

Re: How to force username format?

Post by John Cartwright »

Please explain to me how me asking you a very simple question twice, explaining you will need to provide us with answers to our inquiries, not giving the necessary information to answer your problem, then showing extremely little effort to fulfill our requests make my ego big?

I don't think you understand the concept that we are all volunteers here. We aren't going to do the work for you, or beg you provide us with the correct information. If you do not understand what we are asking for, then say so, and we will elaborate.

If you want someone to hold your hand through the entire process to deducing exactly what you want, go hire someone.
djdubuque
Forum Newbie
Posts: 10
Joined: Sat Sep 12, 2009 6:53 pm

Re: How to force username format?

Post by djdubuque »

John Cartwright wrote:Please explain to me how me asking you a very simple question twice, explaining you will need to provide us with answers to our inquiries, not giving the necessary information to answer your problem, then showing extremely little effort to fulfill our requests make my ego big?

I don't think you understand the concept that we are all volunteers here. We aren't going to do the work for you, or beg you provide us with the correct information. If you do not understand what we are asking for, then say so, and we will elaborate.

If you want someone to hold your hand through the entire process to deducing exactly what you want, go hire someone.

Which part of this statement do you not understand?
I guess I should have mentioned that I'm new at PHP and work with what I can find already available.
You are asking questions as well but you are not elaborating on what you are looking for!
User avatar
jackpf
DevNet Resident
Posts: 2119
Joined: Sun Feb 15, 2009 7:22 pm
Location: Ipswich, UK

Re: How to force username format?

Post by jackpf »

What are these "requirements"? What have you tried?
They seem like pretty self explanatory questions to me....
Locked