【问题标题】:PHP error messages not displaying in browser as in mioddle of JavaScript codePHP 错误消息未像 JavaScript 代码中间那样显示在浏览器中
【发布时间】:2020-05-22 11:34:09
【问题描述】:

我有一个使用 PHP 构建网页的网络应用程序。

程序输出 HTML 页面标题,然后大部分代码正在构建和编写 JavaScript 数据,如果我的代码有问题,HTML 格式的 PHP 错误消息会与 JS 代码混合在一起,所以也会没有出现在浏览器中,因此用户会看到一个没有错误消息的空白屏幕,我需要一个“显示源”才能看到消息。

以下是程序输出的源代码示例,带有 PHP 错误消息:

' node [fontname = "Helvetica-Bold",             ',
'       color="#ffc68c",                 ',
'       fontcolor="#000000",             ',
'       fontsize=10,                               ',
'       shape=box,                                 ',
'       style="rounded,filled"];       ',
' edge [fontname = "Helvetica-Bold", penwidth="3", color="white"];',
<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>/u/jocs065/ihsconfig/ihs/jocs065/cgi-bin/phpNoSecure/graphBuild.php</b> on line <b>739</b><br />
'}',
];
</script>

中间的forEach() 是PHP 错误消息,它不会出现在正在构建的网页上。

有什么方法可以让用户看到这个错误?

【问题讨论】:

  • 您可以尝试在代码中添加错误捕获元素。如果检测到错误,则继续执行并将错误放入页面,它会返回一个不同的页面,其中详细信息位于脚本标记之外,因此可以通过浏览器看到。
  • @Francesco 好的 - 我会调查的。我对 PHP 很陌生。
  • 是的,对不起。您可以将部分代码包含在 try-catch 块中,并将代码的结果保存在字符串变量中。如果代码没有错误,则回显包含在脚本标签中的字符串,否则显示您选择的错误。

标签: javascript php error-handling


【解决方案1】:

您可以按照建议使用 Try {} Catch {} 块,也可以使用 set_error_handler 定义自定义错误处理程序。请注意,您还可以尝试使用 error_reporting( -1 ) 来不显示错误甚至 ini_set( "display_errors", false )

【讨论】:

    【解决方案2】:

    如果我没看错,您似乎是在发布(假设)到一个 php 页面来做一些事情,那么您正试图通过您原来的消息来提醒用户 php 代码的结果主页?

    使用一些 php 变量创建一个数组状态和消息,将返回到您的 mymainpage.php,尝试以下 -

    你的主页张贴说 dostuff.php //在你的 dostuff.php 页面中...

     if($_SERVER["REQUEST_METHOD"] == "POST") {
      //Your messages is obviously returned by some sort of checks, this is for demo only - do stuff here...
      $myerror_message = "Warning:  Invalid argument supplied for foreach() in /u/jocs065/ihsconfig/ihs/jocs065/cgi-bin/phpNoSecure/graphBuild.php on line 739";
      $display_message_status = array('status'=>1,'message'=>$myerror_message);
    
      include_once( '../mymainpage.php' );
    
      exit;
     } else {
      $display_message_status =  array('status'=>0,'message'=>'Nothing was posted, cannot return any myerror_messages.');
      //as above, 1 is for success, 0 is for false...
    
      include_once( '../mymainpage.php' );
    
      exit;
     }
    
     //In your mymainpage.php...
     if ( isset( $display_message_status )) : 
      ($display_message_status['status'] == true ? $class = 'success': $class = 'error');
     ?>
     <div class="message <?PHP echo $class;  ?>">
      <span><?PHP echo $display_message_status['message'];  ?></span>
     </div>
    <?php 
     endif; 
    ?>
    

    您的 dostuff 页面将在 div/span 内返回成功或错误消息供您的用户查看,如果没有状态,则该 div 不可见。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-02
      • 2013-05-12
      • 2011-06-30
      • 2012-04-23
      • 2012-02-17
      • 2016-04-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多