2011-08-23 5808 views
-1

我有一个注册页面,用户注册后,它重定向到网站的供稿页面,但我希望我的用户直接进入供页面使用那里登录凭证作为成员他们刚刚注册,但注册后重定向到我想要的页面,但作为客人。我不知道为什么它会在注册后自动退出。我不希望我的会员在他们刚刚注册时一次又一次地在那里登录详细信息,因此他们应该能够查看那里的个人资料,而无需进一步输入登录凭据。这是我的代码php表单自动注册后立即注销

function signup($iid) { 
    global $db, $client, $uhome, $config; 

    if ($_POST['onpost']) { 
    if ($_POST['iid']) { 
    $res = sql_query("select * from ".tb()."invites where id='{$_POST['iid']}'"); 
    $invite = sql_fetch_array($res); 
    if ($invite['id']) { 
    if ($hold) { 
    $hold = 0; 
    if ($invite['email'] != $_POST['email']) { 
          $errors[] = t('You must use the Email address from which you received the invitation'); 
         } 
        } 
       } 

      } 
      if ($hold) { 
       die('<p>'. 
        t('Only invited people can Sign up this network. If you are invited, please click the link in the inviting email.'). 
        '</p>'); 
      } 

      if (!$_POST['agree_rules']) { 
       $errors[] = t('You must agree to our rules for signing up'); 
      } 

      //get_r(array('username','password','password2','email','agree','confirm_code','location')); 
      if (strtolower($_COOKIE['cfm']) != strtolower($_POST['confirm_code'])) { 
       $errors[] = t('The string you entered for the code verification did not match what was displayed'); 
      } 
      $_POST['username'] = strtolower($_POST['username']); 
      if (strlen($_POST['username']) < 4 || strlen($_POST['username']) > 18 || !ereg("^[0-9a-z]+$",$_POST['username'])) { 
       $errors[] = t('Username').': '.t('from 4 to 18 characters, only 0-9,a-z'); 
      } 
      if (ereg('<',$_POST['fullname'])) { 
       $errors[] = 'Unavailable Full name format'; 
      } 

      if (!$_POST['email'] || !$_POST['fullname'] || !$_POST['username'] || !$_POST['password']) { 
       $errors[] = t('Please fill in all the required blanks'); 
      } 
      else { 
       for($i=1;$i<=7;$i++) { 
        $col = 'var'.$i; 
        $key = 'cf_var'.$i; 
        $key2 = 'cf_var_value'.$i; 
        $key3 = 'cf_var_des'.$i; 
        $key4 = 'cf_var_label'.$i; 
        $key5 = 'cf_var_required'.$i; 
        $ctype = get_gvar($key); 
        if ($ctype != 'disabled' && get_gvar($key5)) { 
         if (!strlen($_POST[$col])) { 
          $errors[] = t('Please fill in all the required blanks'); 
         } 
        } 
       } 
      } 
      if(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $_POST['email'])) { 
       $errors[] = t('Unavailable email address'); 
      } 

      $password = md5($_POST['password'].'jcow'); 
      $timeline = time(); 
      $res = sql_query("select * from `".tb()."accounts` where email='{$_POST['email']}'"); 
      if (sql_counts($res)) { 
       $errors[] = t('You have registered with this email address before.'); 
      } 
      $res = sql_query("select * from `".tb()."accounts` where username='{$_POST['username']}'"); 
      if (sql_counts($res)) { 
       $errors[] = t('The Username has already been used'); 
      } 

      if (!is_array($errors)) { 
       $reg_code = ''; 
       $verify_note = ''; 
       // member 
       if ($_POST['hide_age']) { 
        $hide_age = 1; 
       } 
       else { 
        $hide_age = 0; 
       } 
       $newss = get_rand(12); 
       if (get_gvar('pm_enabled')) { 
        $member_disabled = 1; 
       } 
       else { 
        $member_disabled = 0; 
       } 
       sql_query("insert into `".tb()."accounts` (about_me,disabled,gender,location,birthyear,birthmonth,birthday,hide_age,password,email,username,fullname,created,lastlogin,ipaddress,var1,var2,var3,var4,var5,var6,var7,reg_code) values('{$_POST['about_me']}',$member_disabled,'{$_POST['gender']}','{$_POST['location']}','{$_POST['birthyear']}','{$_POST['birthmonth']}','{$_POST['birthday']}','{$hide_age}','$password','".$_POST['email']."','{$_POST['username']}','{$_POST['fullname']}',$timeline,$timeline,'{$client['ip']}','{$_POST['var1']}','{$_POST['var2']}','{$_POST['var3']}','{$_POST['var4']}','{$_POST['var5']}','{$_POST['var6']}','{$_POST['var7']}','{$reg_code}')"); 
       $uid = insert_id(); 

       if ($uid == 1) { 
        sql_query("update ".tb()."accounts set roles='3' where id='$uid'"); 
       } 
       sql_query("insert into `".tb()."pages` (uid,uri,type) values($uid,'{$_POST['username']}','u')"); 
       $page_id = insert_id(); 
       if ($_POST['iid']) { 
        sql_query("update ".tb()."invites set status=1 where id='{$_POST['iid']}'"); 
       } 

       stream_publish(t('Signed Up <br /><br /> <img src="'.uhome().'/1.png">'),'','',$uid,$page_id); 
       // welcome email 
       $welcome_email = nl2br(get_text('welcome_email')); 
       $welcome_email = str_replace('%username%',$_POST['username'],$welcome_email); 
       $welcome_email = str_replace('%email%',$_POST['email'],$welcome_email); 
       $welcome_email = str_replace('%password%',$_POST['password'],$welcome_email); 
       $welcome_email = str_replace('%sitelink%',url(uhome(),h(get_gvar('site_name'))),$welcome_email); 
       @jcow_mail($_POST['email'], 'Welcome to "'.h(get_gvar('site_name')).'"!', $verify_note.$welcome_email); 
       $_SESSION['login_cd'] = 3; 
       redirect(url('feed')); 
       exit; 
      } 
      else { 
       foreach ($errors as $error) { 
        $error_msg .= '<li>'.$error.'</li>'; 
       } 
       sys_notice(t('Errors').':<ul>'.$error_msg.'</ul>'); 
      } 
     } 
     if ($iid) { 
      $res = sql_query("select * from ".tb()."invites where id='{$iid}'"); 
      $invite = sql_fetch_array($res); 
      if ($invite['id']) { 
       $hold = 0; 
       $use_i_email = t('You must use the Email address from which you received the invitation'); 
       $iid_field = '<input type="hidden" name="iid" value="'.$iid.'" />'; 
      } 
     } 
     if ($hold) { 
      c(t('Sorry, only invited people can sign up')); 
      stop_here(); 
     } 

     set_title('Signup'); 
      if (get_gvar('pm_enabled')) { 
       c('<strong>'.t('Join Us').'</strong><br /> 
       '.t('Membership pricing').':<ul>'); 
       if ($pm_1m = get_gvar('pm_1m')) { 
        c('<li>'.$pm_1m.' '.get_gvar('pm_currency').' '.t('Per month').'</li>'); 
       } 
       if ($pm_3m = get_gvar('pm_3m')) { 
        c('<li>'.$pm_3m.' '.get_gvar('pm_currency').' '.t('Per Annua').'</li>'); 
       } 
       if ($pm_12m = get_gvar('pm_12m')) { 
        c('<li>'.$pm_12m.' '.get_gvar('pm_currency').' '.t('Per Yeal').'</li>'); 
       } 
       c('</ul>'); 
       section_close(t('Paid membership')); 
      } 
        c(' 
    <script> 
    $(document).ready(function(){ 
    objrow = $("tr.row1 td::first-child"); 
    objrow.attr("valign","top"); 
    objrow.attr("align","right"); 
    }); 
</script> 
    <form method="post" action="'.url('member/signup').'" > 
    <table class="stories"> 
    <tr class="table_line1"> 


    <td colspan="2">'.t('Passport').'</td></tr> 
    <tr class="row1"> 
    <td>*'.t('Email Address').' '.$use_i_email.'</td> 
    <td><input type="text" size="20" name="email"  value="'.h($_REQUEST['email']).'" class="fpost" style="width:180px" /><br /><span class="sub">('.$invite_msg.t("We won't display your Email Address.").')</span> 
</tr> 
    <tr class="row1"> 


    <td>*'.t('Username').'/'.t('Nickname').'</td><td> 
    <input type="text" size="18" class="fpost" name="username" value="'.h($_REQUEST['username']).'" style="width:180px" /><br /> 
    <span class="sub">('.t('4 to 18 characters, made up of 0-9,a-z').')</span> 
</tr> 
    <tr class="row1"> 


    <td>*'.t('Password').'</td><td> 
    <input type="password" name="password" class="fpost" value="'.h($_REQUEST['password']).'" style="width:180px" /> 
</tr> 
    <tr class="table_line1"> 


    <td colspan="2">'.t('Personal info').'</td></tr> 
    <tr class="row1"> 
    <td>*'.t('Full Name').'</td><td> 
    <input type="text" size="20" name="fullname" value="'.h($_REQUEST['fullname']).'" class="fpost" style="width:180px" /> 
</td> 
</tr> 
<tr class="row1"> 


    <td>*'.t('Birth').'</td><td> 
        <select name="birthyear" class="fpost"> 
        '); 
        $year_from = date("Y",time()) - 8; 
        $year_to = date("Y",time()) - 100; 
        if ($_REQUEST['birthyear']) 
         $yearkey = $_REQUEST['birthyear']; 
        else 
         $yearkey = $year_from - 12; 
        for ($i=$year_from;$i>$year_to;$i--) { 
         $selected = ''; 
         if ($yearkey == $i) 
          $selected = 'selected'; 
         c('<option value="'.$i.'" '.$selected.'>'.$i.'</option>'); 
        } 
        if ($row['hide_age']) $hide_age = 'checked'; 
        c(' 
        </select> 
        <select name="birthmonth" class="fpost">'); 
        for ($i=1;$i<13;$i++) { 
         if ($i<10)$j='0'.$i;else $j=$i;$iss=''; 
         if ($_REQUEST['birthmonth'] == $j) $iss='selected'; 
         c('<option value="'.$j.'" '.$iss.' >'.$j.'</option>'); 
        } 
        c('</select> 
        <select name="birthday" class="fpost">'); 
        for ($i=1;$i<=31;$i++) { 
         if ($i<10)$j='0'.$i;else $j=$i;$iss=''; 
         if ($_REQUEST['birthday'] == $j) $iss='selected'; 
         c('<option value="'.$j.'" '.$iss.'>'.$j.'</option>'); 
        } 
        c('</select><br /> 
        <input type="checkbox" name="hide_age" value="1" '.$hide_age.' />'.t('Hide my age').' 
        </td></tr>'); 
        if ($_REQUEST['gender'] == 1) { 
         $gender1 = 'checked'; 
        } 
        elseif ($_REQUEST['gender'] == 2) { 
         $gender2 = 'checked'; 
        } 
        else { 
         $gender0 = 'checked'; 
        } 
        c(' 
        <tr class="row1"><td>*'.t('Gender').'</td><td> 
        <input type="radio" name="gender" value="1" '.$gender1.' />'.t('Male').' 
        <input type="radio" name="gender" value="0" '.$gender0.' />'.t('Female').' 
        <input type="radio" name="gender" value="2" '.$gender2.' />'.t('Hide').' 
        </td></tr>'); 

        c('<tr class="row1"><td>*'.t('Come from').'</td><td> 
        <select name="location" class="inputText">'); 
        $locations = explode("\r\n",get_text('locations')); 
        $_REQUEST['location'] = trim($_REQUEST['location']); 
        foreach($locations as $location) { 
         if ($_REQUEST['location'] == trim($location)) { 
          $selected = 'selected'; 
         } 
         else { 
          $selected = ''; 
         } 
         c('<option value="'.$location.'" '.$selected.' >'.$location.'</option>'); 
        } 
        c('</select> 
</td> 
</tr> 
<tr class="row1"> 

    <td>'.t('About me').'</td><td> 
        <textarea rows="5" name="about_me">'.htmlspecialchars($client['about_me']).'</textarea></td></tr>'); 

        // custom fields 
        $profile = array(); 
        for($i=1;$i<=7;$i++) { 
         $col = 'var'.$i; 
         $key = 'cf_var'.$i; 
         $key2 = 'cf_var_value'.$i; 
         $key3 = 'cf_var_des'.$i; 
         $key4 = 'cf_var_label'.$i; 
         $key5 = 'cf_var_required'.$i; 
         $ctype = get_gvar($key); 
         $value = get_gvar($key2); 
         $des = get_gvar($key3); 
         $label = get_gvar($key4); 
         $required = get_gvar($key5); 
         if ($required) $required = '*'; 
         if ($ctype != 'disabled') { 
          if ($ctype == 'text') { 
           if (strlen($profile[$col])) { 
            $value = htmlspecialchars($profile[$col]); 
           } 
           if (strlen($_POST[$col])) { 
            $value = h($_POST[$col]); 
           } 
           c('<tr class="row1"><td> 
           '.$required.$label.'</td><td><input type="text" name="'.$col.'" value="'.$value.'" /> 
           <br /><span class="sub">'.$des.'</span></td></tr>'); 
          } 
          elseif ($ctype == 'textarea') { 
           if (strlen($profile[$col])) { 
            $value = htmlspecialchars($profile[$col]); 
           } 
           if (strlen($_POST[$col])) { 
            $value = h($_POST[$col]); 
           } 
           c('<tr class="row1"><td>'.$required.$label.'</td><td> 
           <textarea rows="3" name="'.$col.'" />'.$value.'</textarea><br /> 
           <br /><span class="sub">'.$des.'</span></td></tr>'); 
          } 
          elseif ($ctype == 'select_box') { 
           $tarr = explode("\r\n",$value); 
           c('<tr class="row1"> 
           <td>'.$label.'</td><td> 
           <select name="'.$col.'"> 
           '); 
           if (strlen($_POST[$col])) { 
            $value = h($_POST[$col]); 
           } 
           foreach ($tarr as $val) { 
            if ($val == $value) { 
             $selected = 'selected'; 
            } 
            else { 
             $selected = ''; 
            } 
            c('<option value="'.$val.'" '.$selected.'>'.$val.'</option>'); 
           } 
           c('</select><br /><span class="sub">'.$des.'</span></td></tr>'); 
          } 
         } 
        } 
      c(' 
      <tr class="row2"> 
      <td colspan="2"><strong>'.t('Rules & Conditions').'</strong> 
      <div style="width:700px;height:200px;overflow:scroll;border:white 2px solid;padding:5px;"> 
      '.nl2br(h(get_text('rules_conditions'))).' 
      </div></td> 
      </tr> 
      <tr class="row2"> 
      <td colspan="2" align="center"> 
      <input type="hidden" name="g" value="'.$_REQUEST['g'].'" /> 
      <input type="hidden" name="onpost" value="1" /> 
      <input type="checkbox" name="agree_rules" value="1" checked /> '.t('I have read, and agree to abide by the Rules & Conditions.').' 
         <input type="submit" style="background:#5BA239;color:white;font-size:1.5em;font-weight:bold" value="'.t('Signup Now').'" /> 
         </td></tr> 


      </table> 
     </form> 
      '); 

    } 
    } 

回答

0

您可能需要在重定向之前重新生成会话。我用注册下面的代码:

session_regenerate_id(); 
// workload 
session_write_close(); 
session_regenerate_id(true); 
header("Location: /dashboard"); 
+0

请告诉在哪里放这段代码,以便在注册后我的用户将直接进入到页面 –

+0

这将用于你有你目前的重定向和工作量来发送用户信息的地方。 - 当然,在我的代码中删除标题()会重定向。 – nbelmont

+0

@ nbelmont谢谢,我会试试看,希望它能解决 –

0

@jcow_mail($_POST['email'], 'Welcome to "'.h(get_gvar('site_name')).'"!', $verify_note.$welcome_email); 

加入这一行

$_SESSION['uid'] = $uid; 
redirect(url('dashboard'),t('Congratulations! You have successfully signed up.')); 
exit; 

就是这样。