У меня проблема с моим PHP. В моем коде это показывает, что текст <?php if (!empty()) { echo ; } ?> отображается в значении текстового поля, когда я запускаю скрипт. Я не хочу удалять текст в значении, потому что мне нужно использовать его при открытии всплывающего окна для ввода списка строк из переменной $email_str, чтобы я мог вывести список строк в текстовом поле ,

Вот код:

<?php

include('config.php');

if($_GET['id'] != '')
{
    $id = $_GET['id'];  
    $readDateTime = date("Y-m-d h:i:s");
    mysql_query("update tracker set isRead='1', readDateTime='$readDateTime' where id='$id'");
    header('Location: http://robsite.com/phpmailer/examples/blank.jpg');
    exit;
}
else
{


    echo "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml'>
    <head>
        <meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
    <title>Send Email</title>
    <link type='text/css' rel='stylesheet' href='style.css'  />
    <script src='jquery-1.12.0.js'></script>
    <script>
        $(document).ready(function(){
            $('#popup').click(function(event) {
                event.preventDefault();

                var popup = window.open('add_address.php', '_blank', 'toolbar=yes, scrollbars=yes, resizable=yes, top=100, left=500, width=400, height=400');
                if (popup != null && !popup.closed) {
                var element = popup.document.getElementById('thePopupField');
                var text = $('#theField').val();
                 if(text != ''){
                    var count = (text.match(/,/g) || []).length;
                    popup.my_count = count+1;
                    popup.my_special_setting = text.replace(/,/g, '\n');
                 }
                }

            });
        });
    </script>
    </head>
    <body>
    <!---->
    <form action='pr_send.php' method='POST' id='theForm'>
    <table> 
        <!-- <tr>
            <td>From:</td>
            <td><input type='text' name='from'></td>
        </tr> -->
        <tr>
            <td><input type='button' name='to' value='' style='height:24px; width:24px; background: url(\"addressbook.png\"); border:none;' id='popup' > To:</td> <!--onClick='Popup()'-->
            <td><input type='text' id='theField' name='to' value='<?php if (!empty($email_str)) { echo $email_str; } ?>' style='height:15px; width:650px'>&nbsp;(<span id='noOfEmails'>0</span>)</td>
        </tr>
        <tr>
            <td>Subject:</td>
            <td><input type='text' name='subject' style='height:15px; width:650px'></td>
        </tr>
        <tr>
            <td>Message:</td>
            <td><textarea name='message' cols='90' rows='20'></textarea></td>
        </tr>
        <tr>
            <td colspan='2' align='left'>
               <input type='submit' name='send' value='' style='height:35px; width:100px; background: url(\"send.png\"); border:none'>
            </td>
        </tr>

    </table>
    </form>
    </body>
<!--<script type='text/javascript'>
var popup = null;
function Popup() 
{
  window.open('add_address.php', '_blank', 'toolbar=yes, scrollbars=yes, resizable=yes, top=100, left=500, width=400, height=400');
}
function closePopUp() 
{
  if (popup) 
  {
    popup.close();
  }
}

</script>-->

</html>";
}

  if (!empty($_POST['message'])) 
  {
    $emails = explode("\n", $_POST['message']); // explode textarea on a line break into an array
    $email_str = implode(", ", $emails); // take each of the emails and implode together with the ,

    echo '<script> closePopUp(); </script>'; //call javascript function
  }  
?>

Когда я запускал код в HTML, он работал нормально, так как текст не отображался в текстовом поле.

Как я могу скрыть текст в значении, когда я запускаю HTML-код в PHP?

php
0
user8078482 29 Май 2017 в 00:40

2 ответа

Лучший ответ

Проблема в том, что ваш тег PHP находится внутри строки, которую вы печатаете с помощью echo. Итак, с предложенным исправлением вы выполняете код PHP и объединяете его со строкой HTML, которую хотите распечатать.

<?php

include('config.php');

if($_GET['id'] != '')
{
    $id = $_GET['id'];  
    $readDateTime = date("Y-m-d h:i:s");
    mysql_query("update tracker set isRead='1', readDateTime='$readDateTime' where id='$id'");
    header('Location: http://robsite.com/phpmailer/examples/blank.jpg');
    exit;
}
else
{

    $email = !empty($email_str) ? $email_str : "";
    $html = "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml'>
    <head>
        <meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
    <title>Send Email</title>
    <link type='text/css' rel='stylesheet' href='style.css'  />
    <script src='jquery-1.12.0.js'></script>
    <script>
        $(document).ready(function(){
            $('#popup').click(function(event) {
                event.preventDefault();

                var popup = window.open('add_address.php', '_blank', 'toolbar=yes, scrollbars=yes, resizable=yes, top=100, left=500, width=400, height=400');
                if (popup != null && !popup.closed) {
                var element = popup.document.getElementById('thePopupField');
                var text = $('#theField').val();
                 if(text != ''){
                    var count = (text.match(/,/g) || []).length;
                    popup.my_count = count+1;
                    popup.my_special_setting = text.replace(/,/g, '\n');
                 }
                }

            });
        });
    </script>
    </head>
    <body>
    <!---->
    <form action='pr_send.php' method='POST' id='theForm'>
    <table> 
        <!-- <tr>
            <td>From:</td>
            <td><input type='text' name='from'></td>
        </tr> -->
        <tr>
            <td><input type='button' name='to' value='' style='height:24px; width:24px; background: url(\"addressbook.png\"); border:none;' id='popup' > To:</td> <!--onClick='Popup()'-->
            <td><input type='text' id='theField' name='to' value='".$email."' style='height:15px; width:650px'>&nbsp;(<span id='noOfEmails'>0</span>)</td>
        </tr>
        <tr>
            <td>Subject:</td>
            <td><input type='text' name='subject' style='height:15px; width:650px'></td>
        </tr>
        <tr>
            <td>Message:</td>
            <td><textarea name='message' cols='90' rows='20'></textarea></td>
        </tr>
        <tr>
            <td colspan='2' align='left'>
               <input type='submit' name='send' value='' style='height:35px; width:100px; background: url(\"send.png\"); border:none'>
            </td>
        </tr>

    </table>
    </form>
    </body>
<!--<script type='text/javascript'>
var popup = null;
function Popup() 
{
  window.open('add_address.php', '_blank', 'toolbar=yes, scrollbars=yes, resizable=yes, top=100, left=500, width=400, height=400');
}
function closePopUp() 
{
  if (popup) 
  {
    popup.close();
  }
}

</script>-->

</html>";

echo $html;
}

  if (!empty($_POST['message'])) 
  {
    $emails = explode("\n", $_POST['message']); // explode textarea on a line break into an array
    $email_str = implode(", ", $emails); // take each of the emails and implode together with the ,

    echo '<script> closePopUp(); </script>'; //call javascript function
  }  
?>
0
Iván Rodríguez Torres 29 Май 2017 в 09:08

Вы строите страницу HTML как строку PHP, но вы пытаетесь включить код PHP в эту строку PHP.

PHP работает на стороне сервера, а не на клиенте. Если вы отправите код PHP как текст клиенту, он будет проигнорирован.

Кроме того, вы не присваиваете $ email_str значение до тех пор, пока не используете его.

Переместите код, чтобы установить $ email_str, прежде чем использовать его, а также присвойте ему значение по умолчанию "", если данных POST нет.

Затем для вашего эха, разделите его на 3 части:

  • первая часть строки страницы до значения = '
  • echo $ email_str (который вы теперь установите на "", если нет POST)
  • остальная часть страницы

Код

 echo "<!DOCTYPE html PUBLIC '-//W3    ...  <input type='text' id='theField' name='to' value='";
 echo $email_str
 echo "' style='height:15px; width:65  ... </html>";
0
Dave S 28 Май 2017 в 21:58