2016-04-17 2 views
0

У меня есть небольшая проблема, надеюсь, вы, ребята, можете мне помочь!2 PHP переключается одновременно

Итак, я добавил PHP-переключатель для загрузки страниц и систему входа с переключателем действий, но когда я зарегистрируюсь, я перенаправляюсь на индекс.

Я покажу свой код:

register.php:

//if logged in redirect to members page 
if($user->is_logged_in()){ header('Location: index.php?page=profile'); } 

//if form has been submitted process it 
if(isset($_POST['Submit'])){ 


//very basic validation 
if(strlen($_POST['username']) < 3){ 
    $error[] = 'Username is too short.'; 
} else { 
    $stmt = $db->prepare('SELECT username FROM members WHERE username = :username'); 
    $stmt->execute(array(':username' => $_POST['username'])); 
    $row = $stmt->fetch(PDO::FETCH_ASSOC); 

    if(!empty($row['username'])){ 
     $error[] = 'Username provided is already in use.'; 
    } 

} 

if(strlen($_POST['password']) < 3){ 
    $error[] = 'Password is too short.'; 
} 

if(strlen($_POST['passwordConfirm']) < 3){ 
    $error[] = 'Confirm password is too short.'; 
} 

if($_POST['password'] != $_POST['passwordConfirm']){ 
    $error[] = 'Passwords do not match.'; 
} 

//email validation 
if(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){ 
    $error[] = 'Please enter a valid email address'; 
} else { 
    $stmt = $db->prepare('SELECT email FROM members WHERE email = :email'); 
    $stmt->execute(array(':email' => $_POST['email'])); 
    $row = $stmt->fetch(PDO::FETCH_ASSOC); 

    if(!empty($row['email'])){ 
     $error[] = 'Email provided is already in use.'; 
    } 

} 


//if no errors have been created carry on 
if(!isset($error)){ 

    //hash the password 
    $hashedpassword = $user->password_hash($_POST['password'], PASSWORD_BCRYPT); 

    //create the activasion code 
    $activasion = md5(uniqid(rand(),true)); 

    try { 

     //insert into database with a prepared statement 
     $stmt = $db->prepare('INSERT INTO members (username,password,email,active) VALUES (:username, :password, :email, :active)'); 
     $stmt->execute(array(
      ':username' => $_POST['username'], 
      ':password' => $hashedpassword, 
      ':email' => $_POST['email'], 
      ':active' => $activasion 
     )); 
     $id = $db->lastInsertId('memberID'); 

     //send email 
     $to = $_POST['email']; 
     $subject = "Registration Confirmation"; 
     $body = "<p>Thank you for registering at demo site.</p> 
     <p>To activate your account, please click on this link: <a href='".DIR."activate.php?x=$id&y=$activasion'>".DIR."activate.php?x=$id&y=$activasion</a></p> 
     <p>Regards Site Admin</p>"; 

     $mail = new Mail(); 
     $mail->setFrom(SITEEMAIL); 
     $mail->addAddress($to); 
     $mail->subject($subject); 
     $mail->body($body); 
     $mail->send(); 

     //redirect to index page 
     header('Location: index.php?page=register?action=joined'); 
     exit; 

    //else catch the exception and show the error. 
    } catch(PDOException $e) { 
     $error[] = $e->getMessage(); 
    } 

} 

} 
?> 
    <form id='register' action='' method='post' 
     accept-charset='UTF-8'> 
<h3 style="width: 587px;">Register</h3> 
       <?php 
      //check for any errors 
      if(isset($error)){ 
       foreach($error as $error){ 
        echo '<h5 style="background-color: #FF4E4E; border-radius: 5px; border: solid #D30000; 2px ">'.$error.'</h5>'; 
       } 
      } 

      //if action is joined show sucess 
      if(isset($_GET['action']) && $_GET['action'] == 'joined'){ 
       echo "<h2 class='bg-success'>Registration successful, please check your email to activate your account.</h2>"; 
      } 
      ?> 
<br /> 
<table> 
<tr> 
<td class="left"><label for='username' >Username*:</label></td> 
<td class="mid"><input type='register' name='username' id='username' placeholder="Choose a username" value="<?php if(isset($error)){ echo $_POST['username']; } ?>" maxlength="50" /></td> 
<td class="right">TEXT</td> 
</tr> 
<tr> 
<td><label for='email' >Your E-mail*:</label></td> 
<td><input type='register' name='email' id='email' placeholder="Enter your E-mail addres" maxlength="50" value="<?php if(isset($error)){ echo $_POST['email']; } ?>" /><td> 
<td class="right">TEXT</td> 
</tr> 
<tr> 
<td><label for='password' >Password*:</label></td> 
<td><input type='register' name="password" id='password' placeholder="Choose a password" maxlength="50" /></td> 
<td class="right">TEXT</td> 
</tr> 
<tr> 
<td><label for='password' >Confirm Password*:</label></td> 
<td><input type='register' name="passwordConfirm" id='password' placeholder="Choose a password" maxlength="50" /></td> 
<td class="right">TEXT</td> 
</tr> 
</table> 
<center> 
<input type='submit' name='Submit' value='Register' /> 
</center> 
</form> 

load.php (PHP страница коммутатора)

error_reporting(0); 
switch($_GET['page']) 
{ 
case 'home': 
case 'register': 
case 'login': 
case 'profile': 
case 'logout': 
    include("pages/$_GET[page].php"); 
    break; 
default: 
    include('pages/home.php'); 
} 

index.php

<div id="content"> 
    <div class="rightcontent"> 
     <?php include "main/right-sidebar.php" ?> 
    </div> 
    <div class="leftcontent"> 
     <?php include "main/left-sidebar.php" ?> 
    </div> 
    <div class="midcontent"> 
     <?php include "main/load.php"; ?> 
    </div> 
</div> 

Если вам нужна дополнительная информация, просто спросите. Надеюсь, вы, ребята, получили решение для этого, как другой способ приблизиться к этому?

Заранее спасибо

+2

Лучше всего разместить свой код в своем вопросе, а не в ссылке, так что, если ссылки будут умирать, вопрос по-прежнему будет полезен другим. – rjdown

+0

Используйте pastebin для чата, а не вопросы – Machavity

+0

Извините, ребята, я новичок здесь, на stackoverflow – AuroraFresh

ответ

0

Там, где вы установили местоположение заголовка к index.php?page=register, вы не должны идти на load.php?page=register ? Или я что-то упускаю?

+0

Добавил index.php, возможно, вы сейчас понимаете, как работает сайт. – AuroraFresh

+0

Это действительно меняет вещи. Итак, вы перенаправляетесь на индекс и должны перенаправлять на регистрацию? Почему вы не можете перенаправить регистрацию, почему переключатель? Делая двойную переадресацию, вы теряете переменную $ _POST 'action = join' –

+0

Как я могу это исправить? есть ли лучший способ загрузить страницы? – AuroraFresh

Смежные вопросы