Page 1 of 2

How to force username format?

Posted: Sat Sep 12, 2009 6:55 pm
by djdubuque
Could someone help on this?

Re: How to force username format?

Posted: Sat Sep 12, 2009 7:11 pm
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.

Re: How to force username format?

Posted: Sat Sep 12, 2009 7:39 pm
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.

Re: How to force username format?

Posted: Sat Sep 12, 2009 7:43 pm
by requinix
One more time?
tasairis wrote:describe the question or problem in detail.

Re: How to force username format?

Posted: Sat Sep 12, 2009 7:44 pm
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

Re: How to force username format?

Posted: Sat Sep 12, 2009 7:54 pm
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.

Re: How to force username format?

Posted: Sat Sep 12, 2009 7:58 pm
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.

Re: How to force username format?

Posted: Sat Sep 12, 2009 8:05 pm
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);
 }
?>
 

Re: How to force username format?

Posted: Sat Sep 12, 2009 8:21 pm
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.

Re: How to force username format?

Posted: Sat Sep 12, 2009 8:29 pm
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!

Re: How to force username format?

Posted: Sat Sep 12, 2009 8:39 pm
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.

Re: How to force username format?

Posted: Sat Sep 12, 2009 8:46 pm
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!

Re: How to force username format?

Posted: Sat Sep 12, 2009 9:05 pm
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.

Re: How to force username format?

Posted: Sun Sep 13, 2009 8:20 am
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!

Re: How to force username format?

Posted: Sun Sep 13, 2009 8:43 am
by jackpf
What are these "requirements"? What have you tried?
They seem like pretty self explanatory questions to me....