source: temp/test-xoops.ec-cube.net/html/register.php @ 1228

Revision 1228, 13.9 KB checked in by uehara, 19 years ago (diff)
Line 
1<?php
2// $Id: register.php,v 1.4 2005/08/03 12:39:11 onokazu Exp $
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
30include 'mainfile.php';
31require(XOOPS_ROOT_PATH . "/pear/Request.php");
32
33$myts =& MyTextSanitizer::getInstance();
34
35$config_handler =& xoops_gethandler('config');
36$xoopsConfigUser =& $config_handler->getConfigsByCat(XOOPS_CONF_USER);
37
38if (empty($xoopsConfigUser['allow_register'])) {
39    redirect_header('index.php', 6, _US_NOREGISTER);
40    exit();
41}
42
43function userCheck($uname, $email, $pass, $vpass)
44{
45    global $xoopsConfigUser;
46    $xoopsDB =& Database::getInstance();
47    $myts =& MyTextSanitizer::getInstance();
48    $stop = '';
49    if (!checkEmail($email)) {
50        $stop .= _US_INVALIDMAIL.'<br />';
51    }
52    foreach ($xoopsConfigUser['bad_emails'] as $be) {
53        if (!empty($be) && preg_match("/".$be."/i", $email)) {
54            $stop .= _US_INVALIDMAIL.'<br />';
55            break;
56        }
57    }
58    if (strrpos($email,' ') > 0) {
59        $stop .= _US_EMAILNOSPACES.'<br />';
60    }
61    $uname = xoops_trim($uname);
62    switch ($xoopsConfigUser['uname_test_level']) {
63    case 0:
64        // strict
65        $restriction = '/[^a-zA-Z0-9\_\-]/';
66        break;
67    case 1:
68        // medium
69        $restriction = '/[^a-zA-Z0-9\_\-\<\>\,\.\$\%\#\@\!\\\'\"]/';
70        break;
71    case 2:
72        // loose
73        $restriction = '/[\000-\040]/';
74        break;
75    }
76    if (empty($uname) || preg_match($restriction, $uname)) {
77        $stop .= _US_INVALIDNICKNAME."<br />";
78    }
79    if (strlen($uname) > $xoopsConfigUser['maxuname']) {
80        $stop .= sprintf(_US_NICKNAMETOOLONG, $xoopsConfigUser['maxuname'])."<br />";
81    }
82    if (strlen($uname) < $xoopsConfigUser['minuname']) {
83        $stop .= sprintf(_US_NICKNAMETOOSHORT, $xoopsConfigUser['minuname'])."<br />";
84    }
85    foreach ($xoopsConfigUser['bad_unames'] as $bu) {
86        if (!empty($bu) && preg_match("/".$bu."/i", $uname)) {
87            $stop .= _US_NAMERESERVED."<br />";
88            break;
89        }
90    }
91    if (strrpos($uname, ' ') > 0) {
92        $stop .= _US_NICKNAMENOSPACES."<br />";
93    }
94    $sql = sprintf('SELECT COUNT(*) FROM %s WHERE uname = %s', $xoopsDB->prefix('users'), $xoopsDB->quoteString(addslashes($uname)));
95    $result = $xoopsDB->query($sql);
96    list($count) = $xoopsDB->fetchRow($result);
97    if ($count > 0) {
98        $stop .= _US_NICKNAMETAKEN."<br />";
99    }
100    $count = 0;
101    if ( $email ) {
102        $sql = sprintf('SELECT COUNT(*) FROM %s WHERE email = %s', $xoopsDB->prefix('users'), $xoopsDB->quoteString(addslashes($email)));
103        $result = $xoopsDB->query($sql);
104        list($count) = $xoopsDB->fetchRow($result);
105        if ( $count > 0 ) {
106            $stop .= _US_EMAILTAKEN."<br />";
107        }
108    }
109    if ( !isset($pass) || $pass == '' || !isset($vpass) || $vpass == '' ) {
110        $stop .= _US_ENTERPWD.'<br />';
111    }
112    if ( (isset($pass)) && ($pass != $vpass) ) {
113        $stop .= _US_PASSNOTSAME.'<br />';
114    } elseif ( ($pass != '') && (strlen($pass) < $xoopsConfigUser['minpass']) ) {
115        $stop .= sprintf(_US_PWDTOOSHORT,$xoopsConfigUser['minpass'])."<br />";
116    }
117       
118    return $stop;
119}
120$op = !isset($_POST['op']) ? 'register' : $_POST['op'];
121$uname = isset($_POST['uname']) ? $myts->stripSlashesGPC($_POST['uname']) : '';
122$email = isset($_POST['email']) ? trim($myts->stripSlashesGPC($_POST['email'])) : '';
123$url = isset($_POST['url']) ? trim($myts->stripSlashesGPC($_POST['url'])) : '';
124$pass = isset($_POST['pass']) ? $myts->stripSlashesGPC($_POST['pass']) : '';
125$vpass = isset($_POST['vpass']) ? $myts->stripSlashesGPC($_POST['vpass']) : '';
126$timezone_offset = $xoopsConfig['default_TZ'];
127$user_viewemail = (isset($_POST['user_viewemail']) && intval($_POST['user_viewemail'])) ? 1 : 0;
128$user_mailok = (isset($_POST['user_mailok']) && intval($_POST['user_mailok'])) ? 1 : 0;
129$mailmaga = (isset($_POST['mailmaga']) && intval($_POST['mailmaga'])) ? 1 : 0;;
130$agree_disc = isset($_POST['agree_disc']) ? $myts->stripSlashesGPC($_POST['agree_disc']) : '';
131
132switch ( $op ) {
133case 'newuser':
134    if (!XoopsSingleTokenHandler::quickValidate('register_newuser')) {
135        exit();
136    }
137    include 'header.php';
138    $stop = '';
139    if ($xoopsConfigUser['reg_dispdsclmr'] != 0 && $xoopsConfigUser['reg_disclaimer'] != '') {
140        if (empty($agree_disc)) {
141            $stop .= _US_UNEEDAGREE.'<br />';
142        }
143    }
144
145    $stop .= userCheck($uname, $email, $pass, $vpass);
146    if (empty($stop)) {
147        $token =& XoopsSingleTokenHandler::quickCreate('register_finish');
148
149        /* ¥Õ¥©¡¼¥à¾åµ­¥³¥á¥ó¥È */
150        echo "<table id='centerMessage'>
151            <tr>
152                <td>
153                    <span class='fs22'><span class='red'>¢¨</span>¡ÖÁ÷¿®¡×¥Ü¥¿¥ó¤ò²¡¤¹¤È¥æ¡¼¥¶ÅÐÏ¿Íѥ᡼¥ë¤òÁ÷¿®¤·¤Þ¤¹¡£<br />
154                    ËÜʸ¤Ëµ­ºÜ¤µ¤ì¤Æ¤¤¤ë¥ê¥ó¥¯¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¥æ¡¼¥¶ÅÐÏ¿´°Î»¤·¤Æ¤¯¤À¤µ¤¤¡£<br /><br />
155                    ¢§---²¼µ­¥á¡¼¥ë¥¢¥É¥ì¥¹¤Ø¥á¡¼¥ë¤òÁ÷¿®¤·¤Þ¤¹¡£---
156                    </span>
157                </td>
158            </tr>
159            <tr><td heigth='10'></td></tr>
160            <tr>
161                <td><span class='fs22'>";
162       
163        echo _US_USERNAME.": ".$myts->htmlSpecialChars($uname)."<br />";
164        echo _US_EMAIL.": ".$myts->htmlSpecialChars($email)."<br />";
165        if ($url != '') {
166            $url = formatURL($url);
167            echo _US_WEBSITE.': '.$myts->htmlSpecialChars($url).'<br />';
168        }
169        //$f_timezone = ($timezone_offset < 0) ? 'GMT '.$timezone_offset : 'GMT +'.$timezone_offset;
170        //echo _US_TIMEZONE.": $f_timezone<br />";
171        echo "<form action='register.php' method='post'>";
172        echo $token->getHtml();
173        echo "<input type='hidden' name='uname' value='".$myts->htmlSpecialChars($uname)."' />
174        <input type='hidden' name='email' value='".$myts->htmlSpecialChars($email)."' />";
175        echo "<input type='hidden' name='user_viewemail' value='".$user_viewemail."' />
176        <input type='hidden' name='url' value='".$myts->htmlSpecialChars($url)."' />
177        <input type='hidden' name='pass' value='".$myts->htmlSpecialChars($pass)."' />
178        <input type='hidden' name='vpass' value='".$myts->htmlSpecialChars($vpass)."' />
179        <input type='hidden' name='timezone_offset' value='".(float)$timezone_offset."' />
180        <input type='hidden' name='user_mailok' value='1' />
181        <input type='hidden' name='mailmaga' value='". $myts->htmlSpecialChars($mailmaga) ."' />       
182        <br /><br /><input type='hidden' name='op' value='finish' /><center><input type='submit' value='". _US_FINISH ."' /></center></form>
183            </span></td>
184            </tr>
185        </table>";
186    } else {
187        echo "<span style='color:#ff0000;'>$stop</span>";
188        include 'include/registerform.php';
189        $reg_form->display();
190    }
191    include 'footer.php';
192    break;
193case 'finish':
194    if (!XoopsSingleTokenHandler::quickValidate('register_finish')) {
195        exit();
196    }
197    include 'header.php';
198    include 'include/registerform.php';
199
200    $stop = userCheck($uname, $email, $pass, $vpass);
201    if ( empty($stop) ) {
202        $member_handler =& xoops_gethandler('member');
203        $newuser =& $member_handler->createUser();
204        $newuser->setVar('user_viewemail',$user_viewemail, true);
205        $newuser->setVar('uname', $uname, true);
206        $newuser->setVar('email', $email, true);
207        if ($url != '') {
208            $newuser->setVar('url', formatURL($url), true);
209        }
210        $newuser->setVar('user_avatar','blank.gif', true);
211        $actkey = substr(md5(uniqid(mt_rand(), 1)), 0, 8);
212        $newuser->setVar('actkey', $actkey, true);
213        $newuser->setVar('pass', md5($pass), true);
214        $newuser->setVar('timezone_offset', $timezone_offset, true);
215        $newuser->setVar('user_regdate', time(), true);
216        $newuser->setVar('uorder',$xoopsConfig['com_order'], true);
217        $newuser->setVar('umode',$xoopsConfig['com_mode'], true);
218        $newuser->setVar('user_mailok',$user_mailok, true);
219        if ($xoopsConfigUser['activation_type'] == 1) {
220            $newuser->setVar('level', 1, true);
221        }
222        if (!$member_handler->insertUser($newuser)) {
223            echo _US_REGISTERNG;
224            include 'footer.php';
225            exit();
226        }
227        $newid = $newuser->getVar('uid');
228        if (!$member_handler->addUserToGroup(XOOPS_GROUP_USERS, $newid)) {
229            echo _US_REGISTERNG;
230            include 'footer.php';
231            exit();
232        }
233        if ($xoopsConfigUser['activation_type'] == 1) {
234            redirect_header('index.php', 4, _US_ACTLOGIN);
235            exit();
236        }
237        if ($xoopsConfigUser['activation_type'] == 0) {
238            $xoopsMailer =& getMailer();
239            $xoopsMailer->useMail();
240            $xoopsMailer->setTemplate('register.tpl');
241            $xoopsMailer->assign('SITENAME', $xoopsConfig['sitename']);
242            $xoopsMailer->assign('ADMINMAIL', $xoopsConfig['adminmail']);
243            $xoopsMailer->assign('SITEURL', XOOPS_URL."/");
244            $xoopsMailer->setToUsers(new XoopsUser($newid));
245            $xoopsMailer->setFromEmail($xoopsConfig['adminmail']);
246            $xoopsMailer->setFromName($xoopsConfig['sitename']);
247            $xoopsMailer->setSubject(sprintf(_US_USERKEYFOR, $uname));
248            if ( !$xoopsMailer->send() ) {
249                echo _US_YOURREGMAILNG;
250            } else {
251                // ¥ª¥Õ¥£¥·¥ã¥ë¥Ú¡¼¥¸¤Ø¤ÎÅÐÏ¿                       
252                if($mailmaga) {
253echo "tst";                 
254                    $objHttp = new HTTP_Request(REGIST_URL);
255                   
256                    $objHttp->setMethod(HTTP_REQUEST_METHOD_POST);
257                   
258                    $objHttp->addPostData("mode", "xoops_regist");
259                    $objHttp->addPostData("name", $uname);
260                    $objHttp->addPostData("email", $email);
261                                       
262                    if (!PEAR::isError($objHttp->sendRequest())) {
263                        $body = $objHttp->getResponseBody();
264                    }
265                   
266                    $objHttp->clearPostData();             
267                }
268                // ¾åÉô¥á¥Ã¥»¡¼¥¸
269                echo "<table id='centerMessage'>
270                        <tr>
271                            <td>
272                                <span class='fs22'><span class='red'>¢¨</span>¤´ÅÐϿͭÆñ¤¦¤´¤¶¤¤¤Þ¤·¤¿¡£<br />
273                                ÅÐÏ¿Íѥ᡼¥ë¤òÁ÷¿®Ãפ·¤Þ¤·¤¿¡£</span>
274                            </td>
275                        </tr>
276                    </table>";
277                //echo _US_YOURREGISTERED;
278            }
279        } elseif ($xoopsConfigUser['activation_type'] == 2) {
280            $xoopsMailer =& getMailer();
281            $xoopsMailer->useMail();
282            $xoopsMailer->setTemplate('adminactivate.tpl');
283            $xoopsMailer->assign('USERNAME', $uname);
284            $xoopsMailer->assign('USEREMAIL', $email);
285            $xoopsMailer->assign('USERACTLINK', XOOPS_URL.'/user.php?op=actv&id='.$newid.'&actkey='.$actkey);
286            $xoopsMailer->assign('SITENAME', $xoopsConfig['sitename']);
287            $xoopsMailer->assign('ADMINMAIL', $xoopsConfig['adminmail']);
288            $xoopsMailer->assign('SITEURL', XOOPS_URL."/");
289            $member_handler =& xoops_gethandler('member');
290            $xoopsMailer->setToGroups($member_handler->getGroup($xoopsConfigUser['activation_group']));
291            $xoopsMailer->setFromEmail($xoopsConfig['adminmail']);
292            $xoopsMailer->setFromName($xoopsConfig['sitename']);
293            $xoopsMailer->setSubject(sprintf(_US_USERKEYFOR, $uname));
294            if ( !$xoopsMailer->send() ) {
295                echo _US_YOURREGMAILNG;
296            } else {
297                echo _US_YOURREGISTERED2;
298            }
299        }
300        if ($xoopsConfigUser['new_user_notify'] == 1 && !empty($xoopsConfigUser['new_user_notify_group'])) {
301            /* ¥æ¡¼¥¶ÅÐÏ¿»þ´ÉÍý¼Ô¤Ø¤Î¥á¡¼¥ëÇÛ¿®¤òÄä»ß */
302            /*$xoopsMailer =& getMailer();
303            $xoopsMailer->useMail();
304            $member_handler =& xoops_gethandler('member');
305            $xoopsMailer->setToGroups($member_handler->getGroup($xoopsConfigUser['new_user_notify_group']));
306            $xoopsMailer->setFromEmail($xoopsConfig['adminmail']);
307            $xoopsMailer->setFromName($xoopsConfig['sitename']);
308            $xoopsMailer->setSubject(sprintf(_US_NEWUSERREGAT,$xoopsConfig['sitename']));
309            $xoopsMailer->setBody(sprintf(_US_HASJUSTREG, $uname));
310            $xoopsMailer->send();
311            */
312        }
313    } else {
314        echo "<span style='color:#ff0000; font-weight:bold;'>$stop</span>";
315        include 'include/registerform.php';
316        $reg_form->display();
317    }
318    include 'footer.php';
319    break;
320case 'register':
321default:
322    include 'header.php';
323    include 'include/registerform.php';
324    $reg_form->display();
325    include 'footer.php';
326    break;
327}
328?>
Note: See TracBrowser for help on using the repository browser.