home *** CD-ROM | disk | FTP | other *** search
/ Cricao de Sites - 650 Layouts Prontos / WebMasters.iso / CMS / xoops-2.0.18.1.exe / xoops-2.0.18.1 / htdocs / register.php < prev    next >
Encoding:
PHP Script  |  2007-09-09  |  11.4 KB  |  272 lines

  1. <?php
  2. // $Id: register.php 1029 2007-09-09 03:49:25Z phppp $
  3. //  ------------------------------------------------------------------------ //
  4. //                XOOPS - PHP Content Management System                      //
  5. //                    Copyright (c) 2000 XOOPS.org                           //
  6. //                       <http://www.xoops.org/>                             //
  7. //  ------------------------------------------------------------------------ //
  8. //  This program is free software; you can redistribute it and/or modify     //
  9. //  it under the terms of the GNU General Public License as published by     //
  10. //  the Free Software Foundation; either version 2 of the License, or        //
  11. //  (at your option) any later version.                                      //
  12. //                                                                           //
  13. //  You may not change or alter any portion of this comment or credits       //
  14. //  of supporting developers from this source code or any supporting         //
  15. //  source code which is considered copyrighted (c) material of the          //
  16. //  original comment or credit authors.                                      //
  17. //                                                                           //
  18. //  This program is distributed in the hope that it will be useful,          //
  19. //  but WITHOUT ANY WARRANTY; without even the implied warranty of           //
  20. //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            //
  21. //  GNU General Public License for more details.                             //
  22. //                                                                           //
  23. //  You should have received a copy of the GNU General Public License        //
  24. //  along with this program; if not, write to the Free Software              //
  25. //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA //
  26. //  ------------------------------------------------------------------------ //
  27.  
  28. $xoopsOption['pagetype'] = 'user';
  29.  
  30. include 'mainfile.php';
  31. $myts =& MyTextSanitizer::getInstance();
  32.  
  33. $config_handler =& xoops_gethandler('config');
  34. $xoopsConfigUser =& $config_handler->getConfigsByCat(XOOPS_CONF_USER);
  35.  
  36. if (empty($xoopsConfigUser['allow_register'])) {
  37.     redirect_header('index.php', 6, _US_NOREGISTER);
  38.     exit();
  39. }
  40.  
  41. function userCheck($uname, $email, $pass, $vpass)
  42. {
  43.     global $xoopsConfigUser;
  44.     $xoopsDB =& Database::getInstance();
  45.     $myts =& MyTextSanitizer::getInstance();
  46.     $stop = '';
  47.     if (!checkEmail($email)) {
  48.         $stop .= _US_INVALIDMAIL.'<br />';
  49.     }
  50.     foreach ($xoopsConfigUser['bad_emails'] as $be) {
  51.         if (!empty($be) && preg_match("/".$be."/i", $email)) {
  52.             $stop .= _US_INVALIDMAIL.'<br />';
  53.             break;
  54.         }
  55.     }
  56.     if (strrpos($email,' ') > 0) {
  57.         $stop .= _US_EMAILNOSPACES.'<br />';
  58.     }
  59.     $uname = xoops_trim($uname);
  60.     switch ($xoopsConfigUser['uname_test_level']) {
  61.     case 0:
  62.         // strict
  63.         $restriction = '/[^a-zA-Z0-9\_\-]/';
  64.         break;
  65.     case 1:
  66.         // medium
  67.         $restriction = '/[^a-zA-Z0-9\_\-\<\>\,\.\$\%\#\@\!\\\'\"]/';
  68.         break;
  69.     case 2:
  70.         // loose
  71.         $restriction = '/[\000-\040]/';
  72.         break;
  73.     }
  74.     if (empty($uname) || preg_match($restriction, $uname)) {
  75.         $stop .= _US_INVALIDNICKNAME."<br />";
  76.     }
  77.     if (strlen($uname) > $xoopsConfigUser['maxuname']) {
  78.         $stop .= sprintf(_US_NICKNAMETOOLONG, $xoopsConfigUser['maxuname'])."<br />";
  79.     }
  80.     if (strlen($uname) < $xoopsConfigUser['minuname']) {
  81.         $stop .= sprintf(_US_NICKNAMETOOSHORT, $xoopsConfigUser['minuname'])."<br />";
  82.     }
  83.     foreach ($xoopsConfigUser['bad_unames'] as $bu) {
  84.         if (!empty($bu) && preg_match("/".$bu."/i", $uname)) {
  85.             $stop .= _US_NAMERESERVED."<br />";
  86.             break;
  87.         }
  88.     }
  89.     if (strrpos($uname, ' ') > 0) {
  90.         $stop .= _US_NICKNAMENOSPACES."<br />";
  91.     }
  92.     $sql = sprintf('SELECT COUNT(*) FROM %s WHERE uname = %s', $xoopsDB->prefix('users'), $xoopsDB->quoteString(addslashes($uname)));
  93.     $result = $xoopsDB->query($sql);
  94.     list($count) = $xoopsDB->fetchRow($result);
  95.     if ($count > 0) {
  96.         $stop .= _US_NICKNAMETAKEN."<br />";
  97.     }
  98.     $count = 0;
  99.     if ( $email ) {
  100.         $sql = sprintf('SELECT COUNT(*) FROM %s WHERE email = %s', $xoopsDB->prefix('users'), $xoopsDB->quoteString(addslashes($email)));
  101.         $result = $xoopsDB->query($sql);
  102.         list($count) = $xoopsDB->fetchRow($result);
  103.         if ( $count > 0 ) {
  104.             $stop .= _US_EMAILTAKEN."<br />";
  105.         }
  106.     }
  107.     if ( !isset($pass) || $pass == '' || !isset($vpass) || $vpass == '' ) {
  108.         $stop .= _US_ENTERPWD.'<br />';
  109.     }
  110.     if ( (isset($pass)) && ($pass != $vpass) ) {
  111.         $stop .= _US_PASSNOTSAME.'<br />';
  112.     } elseif ( ($pass != '') && (strlen($pass) < $xoopsConfigUser['minpass']) ) {
  113.         $stop .= sprintf(_US_PWDTOOSHORT,$xoopsConfigUser['minpass'])."<br />";
  114.     }
  115.     return $stop;
  116. }
  117. $op = !isset($_POST['op']) ? 'register' : $_POST['op'];
  118. $uname = isset($_POST['uname']) ? $myts->stripSlashesGPC($_POST['uname']) : '';
  119. $email = isset($_POST['email']) ? trim($myts->stripSlashesGPC($_POST['email'])) : '';
  120. $url = isset($_POST['url']) ? trim($myts->stripSlashesGPC($_POST['url'])) : '';
  121. $pass = isset($_POST['pass']) ? $myts->stripSlashesGPC($_POST['pass']) : '';
  122. $vpass = isset($_POST['vpass']) ? $myts->stripSlashesGPC($_POST['vpass']) : '';
  123. $timezone_offset = isset($_POST['timezone_offset']) ? intval($_POST['timezone_offset']) : $xoopsConfig['default_TZ'];
  124. $user_viewemail = (isset($_POST['user_viewemail']) && intval($_POST['user_viewemail'])) ? 1 : 0;
  125. $user_mailok = (isset($_POST['user_mailok']) && intval($_POST['user_mailok'])) ? 1 : 0;
  126. $agree_disc = (isset($_POST['agree_disc']) && intval($_POST['agree_disc'])) ? 1 : 0;
  127. switch ( $op ) {
  128. case 'newuser':
  129.     include 'header.php';
  130.     $stop = '';
  131.     if (!$GLOBALS['xoopsSecurity']->check()) {
  132.         $stop .= implode('<br />', $GLOBALS['xoopsSecurity']->getErrors())."<br />";
  133.     }
  134.     if ($xoopsConfigUser['reg_dispdsclmr'] != 0 && $xoopsConfigUser['reg_disclaimer'] != '') {
  135.         if (empty($agree_disc)) {
  136.             $stop .= _US_UNEEDAGREE.'<br />';
  137.         }
  138.     }
  139.     $stop .= userCheck($uname, $email, $pass, $vpass);
  140.     if (empty($stop)) {
  141.         echo _US_USERNAME.": ".$myts->htmlSpecialChars($uname)."<br />";
  142.         echo _US_EMAIL.": ".$myts->htmlSpecialChars($email)."<br />";
  143.         if ($url != '') {
  144.             $url = formatURL($url);
  145.             echo _US_WEBSITE.': '.$myts->htmlSpecialChars($url).'<br />';
  146.         }
  147.         $f_timezone = ($timezone_offset < 0) ? 'GMT '.$timezone_offset : 'GMT +'.$timezone_offset;
  148.         echo _US_TIMEZONE.": $f_timezone<br />";
  149.         echo "<form action='register.php' method='post'>
  150.         <input type='hidden' name='uname' value='".$myts->htmlSpecialChars($uname)."' />
  151.         <input type='hidden' name='email' value='".$myts->htmlSpecialChars($email)."' />";
  152.         echo "<input type='hidden' name='user_viewemail' value='".$user_viewemail."' />
  153.         <input type='hidden' name='timezone_offset' value='".(float)$timezone_offset."' />
  154.         <input type='hidden' name='url' value='".$myts->htmlSpecialChars($url)."' />
  155.         <input type='hidden' name='pass' value='".$myts->htmlSpecialChars($pass)."' />
  156.         <input type='hidden' name='vpass' value='".$myts->htmlSpecialChars($vpass)."' />
  157.         <input type='hidden' name='user_mailok' value='".$user_mailok."' />
  158.         <br /><br /><input type='hidden' name='op' value='finish' />".$GLOBALS['xoopsSecurity']->getTokenHTML()."<input type='submit' value='". _US_FINISH ."' /></form>";
  159.     } else {
  160.         echo "<span style='color:#ff0000;'>$stop</span>";
  161.         include 'include/registerform.php';
  162.         $reg_form->display();
  163.     }
  164.     include 'footer.php';
  165.     break;
  166. case 'finish':
  167.     include 'header.php';
  168.     $stop = userCheck($uname, $email, $pass, $vpass);
  169.     if (!$GLOBALS['xoopsSecurity']->check()) {
  170.         $stop .= implode('<br />', $GLOBALS['xoopsSecurity']->getErrors())."<br />";
  171.     }
  172.     if ( empty($stop) ) {
  173.         $member_handler =& xoops_gethandler('member');
  174.         $newuser =& $member_handler->createUser();
  175.         $newuser->setVar('user_viewemail',$user_viewemail, true);
  176.         $newuser->setVar('uname', $uname, true);
  177.         $newuser->setVar('email', $email, true);
  178.         if ($url != '') {
  179.             $newuser->setVar('url', formatURL($url), true);
  180.         }
  181.         $newuser->setVar('user_avatar','blank.gif', true);
  182.         $actkey = substr(md5(uniqid(mt_rand(), 1)), 0, 8);
  183.         $newuser->setVar('actkey', $actkey, true);
  184.         $newuser->setVar('pass', md5($pass), true);
  185.         $newuser->setVar('timezone_offset', $timezone_offset, true);
  186.         $newuser->setVar('user_regdate', time(), true);
  187.         $newuser->setVar('uorder',$xoopsConfig['com_order'], true);
  188.         $newuser->setVar('umode',$xoopsConfig['com_mode'], true);
  189.         $newuser->setVar('user_mailok',$user_mailok, true);
  190.         if ($xoopsConfigUser['activation_type'] == 1) {
  191.             $newuser->setVar('level', 1, true);
  192.         }
  193.         if (!$member_handler->insertUser($newuser)) {
  194.             echo _US_REGISTERNG;
  195.             include 'footer.php';
  196.             exit();
  197.         }
  198.         $newid = $newuser->getVar('uid');
  199.         if (!$member_handler->addUserToGroup(XOOPS_GROUP_USERS, $newid)) {
  200.             echo _US_REGISTERNG;
  201.             include 'footer.php';
  202.             exit();
  203.         }
  204.         if ($xoopsConfigUser['activation_type'] == 1) {
  205.             redirect_header('index.php', 4, _US_ACTLOGIN);
  206.             exit();
  207.         }
  208.         if ($xoopsConfigUser['activation_type'] == 0) {
  209.             $xoopsMailer =& getMailer();
  210.             $xoopsMailer->useMail();
  211.             $xoopsMailer->setTemplate('register.tpl');
  212.             $xoopsMailer->assign('SITENAME', $xoopsConfig['sitename']);
  213.             $xoopsMailer->assign('ADMINMAIL', $xoopsConfig['adminmail']);
  214.             $xoopsMailer->assign('SITEURL', XOOPS_URL."/");
  215.             $xoopsMailer->setToUsers(new XoopsUser($newid));
  216.             $xoopsMailer->setFromEmail($xoopsConfig['adminmail']);
  217.             $xoopsMailer->setFromName($xoopsConfig['sitename']);
  218.             $xoopsMailer->setSubject(sprintf(_US_USERKEYFOR, $uname));
  219.             if ( !$xoopsMailer->send() ) {
  220.                 echo _US_YOURREGMAILNG;
  221.             } else {
  222.                 echo _US_YOURREGISTERED;
  223.             }
  224.         } elseif ($xoopsConfigUser['activation_type'] == 2) {
  225.             $xoopsMailer =& getMailer();
  226.             $xoopsMailer->useMail();
  227.             $xoopsMailer->setTemplate('adminactivate.tpl');
  228.             $xoopsMailer->assign('USERNAME', $uname);
  229.             $xoopsMailer->assign('USEREMAIL', $email);
  230.             $xoopsMailer->assign('USERACTLINK', XOOPS_URL.'/user.php?op=actv&id='.$newid.'&actkey='.$actkey);
  231.             $xoopsMailer->assign('SITENAME', $xoopsConfig['sitename']);
  232.             $xoopsMailer->assign('ADMINMAIL', $xoopsConfig['adminmail']);
  233.             $xoopsMailer->assign('SITEURL', XOOPS_URL."/");
  234.             $member_handler =& xoops_gethandler('member');
  235.             $xoopsMailer->setToGroups($member_handler->getGroup($xoopsConfigUser['activation_group']));
  236.             $xoopsMailer->setFromEmail($xoopsConfig['adminmail']);
  237.             $xoopsMailer->setFromName($xoopsConfig['sitename']);
  238.             $xoopsMailer->setSubject(sprintf(_US_USERKEYFOR, $uname));
  239.             if ( !$xoopsMailer->send() ) {
  240.                 echo _US_YOURREGMAILNG;
  241.             } else {
  242.                 echo _US_YOURREGISTERED2;
  243.             }
  244.         }
  245.         if ($xoopsConfigUser['new_user_notify'] == 1 && !empty($xoopsConfigUser['new_user_notify_group'])) {
  246.             $xoopsMailer =& getMailer();
  247.             $xoopsMailer->useMail();
  248.             $member_handler =& xoops_gethandler('member');
  249.             $xoopsMailer->setToGroups($member_handler->getGroup($xoopsConfigUser['new_user_notify_group']));
  250.             $xoopsMailer->setFromEmail($xoopsConfig['adminmail']);
  251.             $xoopsMailer->setFromName($xoopsConfig['sitename']);
  252.             $xoopsMailer->setSubject(sprintf(_US_NEWUSERREGAT,$xoopsConfig['sitename']));
  253.             $xoopsMailer->setBody(sprintf(_US_HASJUSTREG, $uname));
  254.             $xoopsMailer->send();
  255.         }
  256.     } else {
  257.         echo "<span style='color:#ff0000; font-weight:bold;'>$stop</span>";
  258.         include 'include/registerform.php';
  259.         $reg_form->display();
  260.     }
  261.     include 'footer.php';
  262.     break;
  263. case 'register':
  264. default:
  265.     include 'header.php';
  266.     include 'include/registerform.php';
  267.     $reg_form->display();
  268.     include 'footer.php';
  269.     break;
  270. }
  271. ?>
  272.