2016-04-28 1 views
1

Я новичок в этом и пытаюсь понять, как добавить несколько дополнительных функций к этому коду.Php form - добавьте redirect, а также выберите опцию

  1. На отправить страницу нужно перенаправлять на внешний URL т.е. www.google.com
  2. Флажок должен быть автоматически проверены и, когда клиент получает по электронной почте подробности он должен вернуть TRUE/FALSE для подписки на бюллетень (так клиент знает, хотят ли они, чтобы выбрать или нет)

Это мой PHP код:

<?php 
    // Enter the email where you want to receive the notification when someone subscribes 
    $emailTo = '[email protected]'; 

    $subscriber_email = addslashes(trim($_POST['email'])); 

    if (!isEmail($subscriber_email)) { 
     $array = array('valid' => 0, 'message' => 'Insert a valid email address!'); 
     echo json_encode($array); 
    } else { 
     $array = array('valid' => 1, 'message' => 'Thanks for your subscription!'); 
     echo json_encode($array); 

     // Send email 
     $subject = 'New Subscriber (Free eBook)!'; 
     $body = "You have a new subscriber!\n\nEmail: " . $subscriber_email; 
     // uncomment this to set the From and Reply-To emails, then pass the $headers variable to the "mail" function below 
     // $headers = "From: ".$subscriber_email." <" . $subscriber_email . ">" . "\r\n" . "Reply-To: " . $subscriber_email; 
     mail($emailTo, $subject, $body); 
    } 
?> 

И это мой HTML:

<form class="form-inline" role="form" action="assets/subscribe.php" method="post">            
    <div class="form-group"> 
     <label class="sr-only" for="subscribe-email">Email address</label> 
     <input type="text" name="email" placeholder="Enter your email..." class="subscribe-email form-control" id="subscribe-email"> 
    </div> 
    <button type="submit" class="btn">Receive your free eBook</button> 
    <br> 
    <div class="checkbox"> 
     <label> 
      <input type="checkbox" class="checked"> Receive Our Monthly Newsletter 
     </label> 
    </div>            
</form> 
<div class="success-message"></div> 
<div class="error-message"></div> 

ответ

1
  1. Если не было выводиться перед почты() функции (без эха или HTML) вы могли бы использовать это как раз перед закрытием PHP тег:

    header("Location: www.google.com"); 
    exit; 
    

    Так что для перенаправления с PHP вас необходимо удалить все эхо из вашего кода. Если это не может быть сделано, использовать JavaScript:

    window.location.replace("www.google.com"); 
    
  2. Add 'проверил' атрибут вашего флажком. Он должен иметь название тоже , так что вы можете получить доступ к нему с глобальной переменной $ _POST:

    <input name="newsletter" type="checkbox" class="checked" checked> 
    

    Тогда вы можете продлить ваше сообщение:

    $newsletter_subscription = isset($_POST['newsletter']) ? 'TRUE' : 'FALSE'; 
    $body .= 'Newsletter subscription: '.$newsletter_subscription; 
    
+0

Добавление этих двух строк как раз перед закрытием тег, приводит к переадресации, даже если кто-то вводит неверный адрес электронной почты .. Вы должны добавить его после 'mail()' внутри условия else. – Boratzan

+0

@Boratzan Вопрос: «На отправку страницы нужно перенаправить», а не «При успехе подписки страница должна перенаправляться», так что я отвечаю. –

+0

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

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