2014-06-11 2 views
2

나는 하나의 페이저 웹 사이트에서 PHP 폼으로 작업하고 있습니다. 나는 두 가지 문제를 겪고있다. 첫 번째는 제출 될 때 양식이 페이지의 맨 위로 이동한다는 것입니다. 이 문제를 방지하기 위해 몇 가지 다른 방법을 시도했지만 해결 방법이없는 것 같습니다. 두 번째는 양식 세션이 시작된 채로있어 사용자가 ctrl-r을 누르면 내 DB에 빈 재전송이 발생한다는 것입니다.Page Jump to PHP 폼 제출

누군가가 페이지 점프를 무효화하는 방법을 알고 있다면 나는 놀랄 것입니다.

덕분에,

<?php 
if(isset($_POST['add'])) 
{ 
$dbhost = 'XXX'; 
$dbuser = 'XXX'; 
$dbpass = 'XXX'; 
$conn = mysql_connect($dbhost, $dbuser, $dbpass); 
if(! $conn) 
{ 
    die('Could not connect: ' . mysql_error()); 
} 

if(! get_magic_quotes_gpc()) 
{ 
    $form_name  = addslashes ($_POST['form_name']); 
    $form_email = addslashes ($_POST['form_email']); 
    $form_phone = addslashes ($_POST['form_phone']); 
    $form_linkedin = addslashes ($_POST['form_linkedin']); 

    $form_q1  = addslashes ($_POST['form_q1']); 
    $form_q2  = addslashes ($_POST['form_q2']); 
    $form_q3  = addslashes ($_POST['form_q3']); 
    $form_q4  = addslashes ($_POST['form_q4']); 
    $form_q5  = addslashes ($_POST['form_q5']); 
} 
else 
{ 

    $form_name  = $_POST['form_name']; 
    $form_email = $_POST['form_email']; 
    $form_phone = $_POST['form_phone']; 
    $form_linkedin = $_POST['form_linkedin']; 

    $form_q1  = $_POST['form_q1']; 
    $form_q2  = $_POST['form_q2']; 
    $form_q3  = $_POST['form_q3']; 
    $form_q4  = $_POST['form_q4']; 
    $form_q5  = $_POST['form_q5']; 
} 

$sql = "INSERT INTO XXX". 
     "(form_name, form_email, form_phone, form_linkedin, form_q1, form_q2, form_q3, form_q4, form_q5) ". 
     "VALUES('$form_name','$form_email','$form_phone', '$form_linkedin', '$form_q1', '$form_q2', '$form_q3', '$form_q4', NOW())"; 
mysql_select_db('XXX'); 
$retval = mysql_query($sql, $conn); 
if(! $retval) 
{ 
    die("<section id='thank_you'><h1>SOMETHING WENT WRONG</h1><p class='about_body_txt'>Click <a href='XXX'>here</a> to resubmit</p></section>"); 
} 
    echo("<section id='thank_you'><h1>THANK YOU</h1><p class='about_body_txt'>Selected participants will be notified by July 8, 2014. Click <a href='XXX'>here</a> to return to the main site.</p></section>"); 
    mysql_close($conn); 
} 
else 
{ 
?> 
    <form id="gfbm_form" class="theForm" role="form" autocomplete="off" method="POST"> 

        <h2>APPLICATIONS DUE<br/> 
       <span class="medium_txt">THURSDAY, JULY 3RD AT 5PM, EST.</span></h2> 



        <div class="application"> 

         <ul> 
          <li class="small_field"> 
           <span><label class="label_field">Name</label></span> 
           <br/> 
           <input id="form_name" class="name input_field" type="text" name="form_name" /> 
          </li> 

          <li class="small_field"> 
           <span><label class="label_field">Email</label></span> 
           <br/> 
           <input id="form_email" class="email input_field" type="text" name="form_email" /> 
          </li> 

          <li class="small_field_2"> 
           <span><label class="label_field">Phone</label></span> 
           <br/> 
           <input id="form_phone" class="phone input_field" type="text" name="form_phone" /> 
          </li> 


          <li class="small_field_2"> 
           <span><label class="label_field">LinkedIn</label></span> 
           <br/> 
           <input id="form_linkedin" class="linkedin input_field" type="text" name="form_linkedin" /> 
          </li> 


          <li class="essay_question"> 
           <span><label class="label_field">QUESTION 1</label></span> 
           <br/> 
           <textarea id="form_q1" class="q1 input_field_big" type="text" name="form_q1"></textarea> 
          </li> 

          <li class="essay_question"> 
           <span><label class="label_field">QUESTION 2</label></span> 
           <br/> 
           <textarea id="form_q2" class="q2 input_field_big" type="text" name="form_q2"></textarea> 
          </li> 


          <li class="essay_question"> 
           <span><label class="label_field">QUESTION 3</label></span> 
           <br/> 
           <textarea id="form_q3" class="q3 input_field_big" type="text" name="form_q3"></textarea> 
          </li> 


          <li class="essay_question"> 
           <span><label class="label_field">QUESTION 4</label></span> 
           <br/> 
           <textarea id="form_q4" class="q4 input_field_big" type="text" name="form_q4"></textarea> 
          </li> 
         </ul> 



          <input type="checkbox" required id="checkbox-2-1" class="regular-checkbox big-checkbox" /> 
          <label class="check_text"> 
           <p>YES, I'LL BE AVAILABLE FOR ALL OF THOSE DATES.</p> 
          </label> 


          <input type="checkbox" required id="checkbox-2-2" /> 
          <label class="check_text"> 
           <p>I have read and understand the terms and conditions.</p> 
          </label> 



<input name="add" type="submit" class="submit btn btn-default" id='submit' value="APPLY"> 




       </form> 
+2

많이 들으실 것입니다. 절박한 MYSQL_ 진술을 사용하지 마십시오. – Locke

+0

이 질문을 본 적이 있으십니까? http://stackoverflow.com/questions/20274683/how-to-stop-a-page-jumping-to-the-top-once-a-form-is-submitted 또는 http://stackoverflow.com/questions/ 12715387/how-to-jump-to-on-page-of-top-of-page –

+0

@ rlb.usa 이걸 보지 못했습니다. 이 게시를 닫을 예정입니다. 감사! – unfollow

답변

1

submit 페이지를 제출하고, 따라서 다시 정상에 당신을두고, 그것을 다시로드합니다. HTML 앵커를 만들고 onload 자바 스크립트 이벤트 또는 사용자를 동일한 위치로 다시 이동시키기 위해 무언가를 트리거 할 수 있습니다.

+0

또는 AJAX를 사용하여 양식을 제출하고 문자 그대로 동일한 페이지에 머물러보십시오 (동일한 URL에 제출하는 것과 비교). –