Перенаправление происходит до обработки данных формы - PullRequest
0 голосов
/ 23 февраля 2012

Я пытаюсь отправить электронное письмо продавцу с уведомлением о том, что его клиент просмотрел презентацию Google Документов.
Запрос Num = val - это серийный номер, который я использую, чтобы получить фактический URL-адрес документа Google из базы данных и вставить его в форму.

Моя проблема в том, что страница перенаправляется до того, как данные извлекаются, и в конечном итоге переходит на сайт по умолчанию, nitrofill.com.index

Файл gdform.php имеет перенаправление заголовка, которое отлично работает, если я не пытаюсь обработать форму при загрузке страницы. Вот код:

<?php

$sn=$_GET['num'];
echo $sn;

mysql_connect($hostname,$username, $password) OR DIE ('Unable to connect to database! Please try again later.');
mysql_select_db($dbname);
 $selectSQL = "select * from `Presentations` where `serialnum` ='" . $sn ."'" ;

$result = mysql_query($selectSQL) or die(mysql_error());
$row = mysql_fetch_array($result,  MYSQL_BOTH);


?>

<script type="text/javascript">
function myfunc () {
var frm = document.getElementById("notice");
frm.submit();
}
window.onload = myfunc;
</script>

<title>Nitrofill Document</title></head>
<body>
 <form id="notice" action="http://m3sglobal.com/gdform.php" method="post"> 
  <input type="hidden" name="subject" value="<?php echo (urldecode($row['recipient'])) . " has viewed the document you sent them."; ?>" /> 
<input type="hidden" name="redirect" value="<?php echo ((urldecode($row['docurl']))); ?>"/>
<label>Email:</label><input type="text" name="email" value="<?php echo (urldecode($row['tracker'])); ?>"/>
<label>Comments:</label><textarea name="comments" cols="40" rows="5">
Document Viewed:<?php echo ((urldecode($row['docurl']))); ?>

When Accessed:<?php echo ((urldecode($row['last_accessed']))); ?>
</textarea>
<input type="submit" name="submit"/>
</form>

gdform.php выполняет перенаправление следующим образом:

  while (list ($key, $val) = each ($query_vars)) {
     fputs($fp,"<GDFORM_VARIABLE NAME=$key START>\n");
     fputs($fp,"$val\n");
     fputs($fp,"<GDFORM_VARIABLE NAME=$key END>\n");
     if ($key == "redirect") { $landing_page = $val;}
    }
    fclose($fp);
     if ($landing_page != ""){
    header("Location: "  . $landing_page);
    } else {
    header("Location: http://".$_SERVER["HTTP_HOST"]."/");
    }

Спасибо за внимание!

1 Ответ

0 голосов
/ 23 февраля 2012

Код в HTML выполняется сверху вниз.Вы отправляете, как только доберетесь до этого блока JavaScript, то есть еще до того, как вы отобразите форму на странице.

Переместите JS-код внизу страницы или выполните его после DOMготов.

...