[ Index ]
 

Code source de XOOPS 2.0.17.1

Accédez au Source d'autres logiciels libres

title

Body

[fermer]

/htdocs/ -> register.php (source)

   1  <?php
   2  // $Id: register.php 885 2007-07-28 08:36:44Z 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  ?>


Généré le : Sun Nov 25 11:44:32 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics