2016-10-06 3 views
0

Я могу перенаправить на новую страницу, но не вызывать предупреждение.Перенаправление и отображение предупреждений с использованием Javascript

На мероприятии click на кнопку отправки Я хочу получить предупреждающее сообщение JavaScript и перенаправить на страницу с некоторыми обновленными данными.

Данные обновляются и перенаправляются. Предупреждающее сообщение не отображается.

Я знаю, что у меня проблема с SQL-инъекцией. Я буду работать над этим после того, как у меня появится предупреждение.

<!DOCTYPE html> 

<?php 

ob_start(); 
?> 

<html> 
<head> 
    <title>Multiple Update and Delete Data</title> 
    <?php include "header.php"; ?> 
</head> 

<body bgcolor="#DCE3E7"> 

<script type="text/javascript"> 
    function confirm() { 
     if (window.confirm('Are you sure you want to update these properties?')) 
     { 
      window.alert("Successfully update."); 
      document.location.href ='list_sale_update.php'; 
      return true; 
     } 
     else 
     { 
      alert("Error editing list. Please contact system administrator."); 
      return false; 
     } 

    } 
</script> 

    <center><h1><font size="5" face="verdana" >Listing Modification</font></h1></center> 


    <?php 
    $conn = oci_connect("username","password","database") 
    or die("Couldn't logon."); 

      if (empty($_POST["check"])) 
      { 
       $query = "SELECT P.PTY_ID, P.PTY_UNITNUM, P.PTY_STREET,P.PTY_POSTCODE, P.PTY_SUBURB, P.PTY_CITY, T.P_TYPE_NAME, 
         L.LIST_PRICE, L.SALE_PRICE, 
         C.SELLER_FNAME, C.SELLER_LNAME, 
         L.AVAILABILITY 
       FROM PROPERTY_TYPE T, PROPERTY P, CUSTOMER C, LISTINGS L 
       WHERE P.P_TYPE_ID = T.P_TYPE_ID(+) 
       AND L.SELLER_ID = C.SELLER_ID(+) 
       AND P.PTY_ID = L.PTY_ID(+) 
       ORDER BY P.PTY_ID"; 

       $stmt = oci_parse($conn,$query); 
       oci_execute($stmt); 
       ?> 

       <form method="post" 
         action="list_avai_update.php"> 
        <table border="2" cellpadding="5" align="center"> 
         <tr> 
          <th><b> Property ID</th> 
          <th><b> Address</th> 
          <th><b> Property Type</th> 
          <th><b> Seller Name</th> 
          <th><b> Available?</th> 
          <th><b> Listing Price</th> 
          <th><b> Sale Price</th> 
          <th><b> Checkbox</th> 
         </tr> 


         <?php 
         while ($row = oci_fetch_array($stmt)) { 
          ?> 
          <tr> 

           <td><?php echo oci_result($stmt, "PTY_ID"); ?></td> 

           <td><?php echo oci_result($stmt, "PTY_UNITNUM"), " ", oci_result($stmt, "PTY_STREET"), 
            ", ", oci_result($stmt, "PTY_SUBURB"), ", ", oci_result($stmt, "PTY_CITY"), 
            ", ", oci_result($stmt, "PTY_POSTCODE"); ?></td> 

           <td><?php echo oci_result($stmt, "P_TYPE_NAME"); ?></td> 
           <td><?php echo oci_result($stmt, "SELLER_FNAME"), " ", oci_result($stmt, "SELLER_LNAME"); ?></td> 

           <td> 
            Yes<input type="radio" name = "<?php echo oci_result($stmt, "PTY_ID"); ?>" 
               value="1"<?php echo (oci_result($stmt, "AVAILABILITY") == '1') ? 'checked' : '' ?>><br> 
            No <input type="radio" name = "<?php echo oci_result($stmt, "PTY_ID"); ?>" 
               value="0"<?php echo (oci_result($stmt, "AVAILABILITY") == '0') ? 'checked' : '' ?>> 
           </td> 

           <td><?php echo oci_result($stmt, "LIST_PRICE"); ?></td> 
           <td><?php echo oci_result($stmt, "SALE_PRICE"); ?></td> 

           <td align="center"> 
            <input type="checkbox" name="check[]" 
              value="<?php echo oci_result($stmt, "PTY_ID"); ?>"> 
           </td> 

          </tr> 
          <?php 
         } 
         ?> 
        </table> 
       <br><br> 

        <center> 
         <td><input type="submit" style="height:50px; width:200px" value="Confirm Update" 
            onclick="return(confirm());"></td>     &nbsp;&nbsp; &nbsp; 
         <input type="button" style="height:50px; width:200px" value="Return" 
            OnClick="window.location='listing_multi.php'"> 
        </center> 

       </form> 
       <?php 
       oci_free_statement($stmt); 
      } 
      else 
      { 
       foreach ($_POST["check"] as $pty_id) 
       { 
        $query = "UPDATE LISTINGS 
         set AVAILABILITY = " . $_POST[$pty_id] . " 
         WHERE PTY_ID ='" . $pty_id . "'"; 
        $stmt = oci_parse($conn, $query); 
        oci_execute($stmt); 
        header("location: list_avai_update.php"); 


       } 

      } 

    oci_close($conn); 
    ?> 

<br><br> 
<?php 

$filename=$_SERVER["SCRIPT_FILENAME"]; 

?> 
<a href="displaysource.php?filename=<?php echo $filename;?>" target="_blank"><img src="images/client.png "/> </a> 


</body> 
</html> 
+0

Что это за проблема, о которой вы говорите? – vlaz

+0

['oci_bind_by_name'] (http://php.net/manual/en/function.oci-bind-by-name.php):« Записывает переменную «переменная» PHP в переменную-заполнитель Oracle «bv_name'. Связывание важно для производительности базы данных Oracle **, а также как способ избежать проблем безопасности SQL Injection ** ._ « – Andreas

+0

. О его предупреждении окна javascript не запускается в php-коде, если вы читаете мой вопрос. @vlaz – davehyy

ответ

0

Похоже, вы определяете глобальную функцию с именем "confirm", которая заменит существующее window.confirm(). Внутри вашей пользовательской функции вы затем пытаетесь вызвать «window.confirm()» - НО, поскольку вы ее заменили, вы фактически вызываете свою функцию OWN. Это приводит к бесконечному циклу, в результате чего ... готовьтесь к этому ... ошибка «переполнение стека» :) Переименуйте свою функцию в нечто иное, чем «подтвердить» (но продолжите вызов window.confirm() внутри нее, конечно)

+0

... который я не встречал. У меня есть вопрос только с javascript. Но спасибо за обмен – davehyy

+0

На самом деле вы не можете (возможно, не) получить ошибку «переполнение стека», потому что вы фактически не выделяете какую-либо память в своей функции (и, следовательно, не можете переполнять свою стеке). Тем не менее, вы * определенно * переписываете/переопределяете window.confirm() и вызываете свою собственную функцию рекурсивно/бесконечно. Вы должны переименовать свою функцию «подтвердить» на что-то еще, например «myConfirm» или какое-то другое имя, еще не находящееся на «оконном» объекте. –

+0

О! Ты прав! Теперь он отлично работает. Спасибо Jeff @: D – davehyy