2015-04-14 2 views
0

Когда я снял флажки ввода, JavaScript-скрипт share.php переходит в бесконечный цикл, открывая новые окна.Javascript попадает в бесконечный цикл

со всеми 3 проверенными проблемами не возникает.

В какой-то момент это происходит неправильно, но я не могу найти, где. Я не уверен, почему это происходит

<form action="functions/share.php" method="POST" target="_blank"> 
    <p> 
     <textarea class="form-control" style="resize: none;height: 90px;padding: 10px;border-radius: 3px;" name="summary" required>Build a fully customizable Personal Website in seconds - for free.</textarea> 
    </p> 

    <div class="text-center"> 
     <input type="checkbox" name="LinkedIn" value="yes" checked><i class="fa fa-linkedin"></i> 
     <input type="checkbox" name="FaceBook" value="yes" checked><i class="fa fa-facebook"></i> 
     <input type="checkbox" name="Twitter" value="yes" checked><i class="fa fa-twitter"></i> 
    </div> 

    <p><input type="submit" class="btn btn-primary btn-lg btn-block" value="Share" ></p> 
</form> 

share.php

<?php 

    if(isset($_POST['summary'])){ 
     $linkedIn = ""; 
     $faceBook = ""; 
     $twitter = ""; 

     if($_POST['LinkedIn'] == "yes"){ 
      $linkedIn = "http://www.linkedin.com/"; 
     } 

     if($_POST['FaceBook'] == "yes"){ 
      $faceBook = "http://www.facebook.com/"; 
     } 

     if($_POST['Twitter'] == "yes"){ 
      $twitter = "http://www.twitter.com/"; 
     } 

    } 

?> 
<html> 
<body> 
    <div id="linkedin" style="display: none;"> 
     <?php 
      echo htmlspecialchars($linkedIn); 
     ?> 
    </div> 
    <div id="facebook" style="display: none;"> 
     <?php 
      echo htmlspecialchars($faceBook); 
     ?> 
    </div> 
    <div id="twitter" style="display: none;"> 
     <?php 
      echo htmlspecialchars($twitter); 
     ?> 
    </div> 
    <script> 

     var div = document.getElementById("linkedin"); 
     var linkedin= div.textContent; 
     var div = document.getElementById("facebook"); 
     var faceBook= div.textContent; 
     var div = document.getElementById("twitter"); 
     var twitter= div.textContent; 

     if(linkedin != " "){ 

      window.open(linkedin); 
     }; 
     if(faceBook != " "){ 

      window.open(faceBook); 
     }; 
     if(twitter != " "){ 

      window.open(twitter); 
     }; 

     close(); 

    </script> 
</body> 
</html> 
+0

дают кнопку отправки название 'summary'.Why вы используете' htmlspecialchars' в коде PHP Вы не можете использовать переменные PHP в коде JS. почему вы проверяете, равна ли ссылка «", а не «»? –

+0

в коде js отсутствует код php. резюме отправляется как сообщение, нет необходимости добавлять в кнопку. htmlspecialchars, потому что мне нужно сохранить его как HTML-текст, а не отфильтрованный текст. «вместо» - это просто попытка. –

+0

Вы пробовали пройти через него в отладчике? – Mawg

ответ

0

Первое, вы должны изменить проверочный предложение от

if($_POST['LinkedIn'] == "yes")

в if(isset($_POST['LinkedIn']))

Вторая вещь, вы должны удалить близкое предложение в коде JS close();

когда вы делаете эти два изменения, проверенные ссылки открываются. Если есть поле, которое не отмечено, откроется окно со ссылкой http://localhost/functions/share.php. для решения этой проблемы объявить ссылки внутри кода «JS».

Ваш окончательный код:

<?php 

    if(isset($_POST['summary'])){ 
     $linkedIn = ""; 
     $faceBook = ""; 
     $twitter = ""; 

     if(isset($_POST['LinkedIn'])) 
      $linkedIn = htmlspecialchars("http://www.linkedin.com/"); 
     else 
      $linkedIn = ""; 

     if(isset($_POST['FaceBook'])) 
      $faceBook = htmlspecialchars("http://www.facebook.com/"); 
     else 
      $faceBook = ""; 

     if(isset($_POST['Twitter'])) 
      $twitter = htmlspecialchars("http://www.twitter.com/"); 
     else 
      $twitter = ""; 

    } 

?> 
<html> 
<body> 
    <script> 

     var linkedin= "<?php echo $linkedIn; ?>"; 
     var faceBook= "<?php echo $faceBook; ?>"; 
     var twitter= "<?php echo $twitter; ?>"; 

     if(linkedin != "") 
      window.open(linkedin); 
     if(faceBook != "") 
      window.open(faceBook); 
     if(twitter != "") 
      window.open(twitter); 
     //close(); 

    </script> 
</body> 
</html> 
+0

Могу ли я узнать, почему удалить конец() в конце? без него получающая страница share.php не будет закрыта. я проверю ваш ответ и буду принимать, если работает. –

+0

отлично работает спасибо за вашу помощь! –

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