2016-06-28 3 views
1

Я создаю программу, которая должна принимать код от пользователя, и она будет соответствовать ему с другим примером кода, и как только это будет сделано, он будет печатать вход пользователя код. Та часть, которая у меня возникли проблемы с, когда я печатаю код пользователей, все напечатано, но вместо отступов и разрывов строк, это печатается:Нужна помощь в создании php-программы, которая перекликается с кодом

<!DOCTYPE html>\r\n <script src=\"https://code.jquery.com/jquery-3.0.0.min.js\" integrity=\"sha256-JmvOoLtYsmqlsWxa7mDSLMwa6dZ9rrIdtrrVYRnDRH0=\" crossorigin=\"anonymous\"></script>\r\n<html>\r\n <head>\r\n <meta charset=\"utf-8\" />\r\n <title>CodeType</title>\r\n </head>\r\n <body> 

в то время как это вход (и то, что я хочу, как конечный результат):

<!DOCTYPE html> 
<script src="https://code.jquery.com/jquery-3.0.0.min.js" integrity="sha256-JmvOoLtYsmqlsWxa7mDSLMwa6dZ9rrIdtrrVYRnDRH0=" crossorigin="anonymous"></script> 
<html> 
    <head> 
     <meta charset="utf-8" /> 
     <title>CodeType</title> 
    </head> 
    <body> 

Вот мой код:

 <?php include "database.php"; ?> 
     <?php 

    if(isset($_POST['submit'])){ 
     $title = mysqli_real_escape_string($con, $_POST['title']); 
     $code = mysqli_real_escape_string($con, $_POST['code']); 
     $samplecode = mysqli_real_escape_string($con, $_POST['samplecode']); 

     $query = "INSERT INTO `assignments` (`title`, `code`) VALUES ('$title', '$code')"; 

     $cleanCode = str_replace("\r\n", "<br/>" , htmlentities($code)); 
     if(mysqli_query($con, $query)){ 
      if($code = $samplecode){ 
       echo $cleanCode; 
      } 
     } else { 
      echo "fails"; 
     } 
    } 

    ?> 

    <body> 

    <br/> 
     <form method = "post" action = ""> 
      <label id = "title">Title</label> 
      <br/> 
      <input type="text" class="txtInput" name = "title"/> 
      <br/> 
      <br/> 
      <label id = "stuff">Code</label> 
      <br/> 
      <textarea placeholder="Type your code in here" name = "code"></textarea> 
      <br/> 
      <br/> 
      <br/> 
      <label id = "samplecode">Sample testing</label> 
      <br/> 
      <textarea placeholder="Type your test code in here" name = "samplecode"></textarea> 
      <br/> 
      <input type="submit" name = "submit" value="Submit"/> 

      <pre><?php echo $cleanCode ?></pre> 
     </form> 

    </body> 
    <script> 
     $(document).ready(function(){ 
      $('.txtInput').bind("paste",function(e) { 
        e.preventDefault(); 
      }); 
      $("button").on("click", function(){ 
       if($(#txtInput).text() == $(#code).text()){ 
        alert("Working"); 
       } else { 
        alert("Failure"); 
       } 
      }); 
     }); 

    </script> 

</html> 

Любые идеи?

+0

В этом верхнем блоке кода, являются '\ г \ n's буквально там? –

+0

Да, the \ r \ ns на самом деле есть – sahmed

+0

Попробуйте это: измените '$ cleanCode = str_replace (" \ r \ n ","
", htmlentities ($ code));' на этот '$ cleanCode = str_replace (" \ n ","
", htmlentities ($ _ POST ['code']));' –

ответ

0

Справочная информация:

  1. Как C, PHP предположительно (говорит, что путь, потому что я не нашел ссылку на него еще ...) преобразует \r\n/\n к просто \n ,
    (Различные последовательности используются для перевода строки в зависимости от the OS.)

  2. mysqli_real_escape_string()escapes \r and \n, among others.


Что это означает:

  • Нам не нужно, чтобы заменить \r\n; скорее, мы должны заменить \n.

  • С mysqli_real_escape_string() ускользает от символов нашей новой строки, мы должны использовать $_POST['code']; для всего, что не связано с базой данных.


TL; ДР

$cleanCode = str_replace("\r\n", "<br/>" , htmlentities($code)); 

должно быть:

$cleanCode = str_replace("\n", "<br/>" , htmlentities($_POST['code'])); 
+0

Я использовал ваш фрагмент кода, но у меня все еще такая же проблема. Любые другие предложения? – sahmed

+0

@sahmed: Хорошо. Я собираюсь временно удалить его, пока я получаю больше информации ... –

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