Задать вопрос
@WarStyle

Редирект в php при условии входящей переменной с сервера API?

Всем привет.
Есть у одного хостинга свое api - прикрутил и вроде бы всё ок но(!)
После ввода данных в форму и нажатия сабмит вроде бы всё ок. Ответы от сервера API приходят нормально (либо error либо success).
Вот html форма:
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>form</title>
	<link rel="stylesheet" href="css/style.css" media="screen" type="text/css" />
</head>

<body>

  <div id="login">
  <div class="flip">
    <div class="form-signup">
      <h1>Регистрация email</h1>
      <fieldset>
      <p class="login-msg"></p>
        <form name="mail" method="post" action="mail.php" >
        <center>  
		<input id="email" type="text" name="email" required placeholder="Введите email" pattern="^[a-zA-Z0-9]+$" title="Только цифры и латинские буквы в верхнем и нижнем регистре"}/>
		
  <select id="domains">
    <option>@system-neo.com</option>
    <option>@clicin.de</option>
     </select><br>
	 <input type="hidden" id="mailbox" name="mailbox" />
	 <script type="text/javascript">
email.addEventListener('input', joinValues, false);
domains.addEventListener('input', joinValues, false);

function joinValues(){
    mailbox.value = email.value + domains.value;
}
</script>
          <input type="password" name="password" placeholder="Ваш сложный пароль..." pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}"  title="Не менее восьми символов, содержащих хотя бы одну цифру и символы из верхнего и нижнего регистра"  required />
          <input type="submit" name="vsubmit" value="Далее" /></center>
		  </form>
	 
    </div>


  </div>
</div>

</body>
</html>


<?php
$fields = array(
    'auth_login' => "q",
    'auth_token' => "c",
   
    'class' => "hosting_mailbox",
    'method' => "create",
   
    'account' => "c", 
    'mailbox' => $_POST['mailbox'],
    'password' => $_POST['password'],
);

$fields_string = ""; 
foreach($fields as $key => $value) {
     $fields_string .= $key.'='.urlencode($value).'&';
}

rtrim($fields_string, '&');
 
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://asd/api.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, count($fields));
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch);
$response = curl_exec($ch);
curl_close($ch); 
$json_string = 'https://asd/api.php';
$jsondata = file_get_contents($json_string);
$response = json_decode($response,true);
echo "<pre>";
print_r($response);

?>

Как это выглядит:
617c9eef4aa8.pngbede0f290ad3.png
Т.е. меня перенаправляет с 192.168.0.117/new на 192.168.0.117/new/mail.php
Теперь хочу седлать так, что бы при нажатии "submit" проверялось значение print_r($response); сейчас оно выводится на экран в браузере(см. IMG), а мне надо проверить его средствами php и при условии success перенаправлять например на /new/skype.html, а при [b]error[/b] очищать поля в форме и выводить popup на странице формы с ошибкой от print_r($response);
Пытался сделать так:
if ($response == "хз как опредялять success в $response") {$redirect_url = "/new/skype.html";}
else {$redirect_url = "/new";}

 
header('HTTP/1.1 200 OK');
header('Location: http://'.$_SERVER['HTTP_HOST'].$redirect_url);
exit();


Думал парсить страницу... но по-моему это п*ц плохо(
Не знаю как выйти из ситуации. Может кто-то что-то подскажет:)
  • Вопрос задан
  • 425 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
@danforth
Проверяйте так:
if ($response['status'] === 'error') {
// если API вернул статус 'error'
$redirect_url = "/new/skype.html";
} else {
// в противном случае
$redirect_url = "/new";
}

На будущее, всегда пытайтесь предвидеть все события. Я чаще используйте тождественное равно.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@maxyc_webber
Web-программист
в респонз у вас тупо массив. его значения по ключу и проверяйте.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы