2015-07-20 107 views
0

这是很奇怪的,我花了很长一段时间试图弄清楚为什么我的测试页面刷新保持时,他们不应该。我最终缩小到了当我删除print_r($ _ SESSION ['boosters'])代码时,它不再刷新。当print_r在那里时刷新。你可以自己在http://prayerpond.com/posttest2.php进行测试(只需手动刷新页面并查看计数器)。print_r导致页面刷新?

看看在页的开头显示的计数器。如果它跳过一个数字,那么一旦它到达print_r,就会刷新页面。

下面是在页面的开始计数器的代码:

$_SESSION['counter']++; 
echo $_SESSION['counter']; 

这里的代码的其余部分(我删除了一切,这是不必要的重建问题):

<?php 
require_once($_SERVER['DOCUMENT_ROOT'] . "/start.php"); 


// PRE-HEADER PROCESSING 

unset($_SESSION['boosters']); 

$_SESSION['counter']++; 
echo $_SESSION['counter']; 

$sql = "SELECT prayers_views_likes.*, prayers.postid, prayers.privacy, prayers.username 
     FROM prayers_views_likes 
     LEFT JOIN prayers ON prayers_views_likes.postid = prayers.postid 
     WHERE prayers_views_likes.type = 'answer' 
     and prayers.privacy != 'hidden' 
     and prayers.username != 'hoodleehoo' 
     and prayers_views_likes.adj_ratio > 0 
     ORDER BY prayers_views_likes.adj_ratio DESC, prayers_views_likes.views DESC 
     "; 
$_SESSION['boosters'] = send_query($sql); 


print_r ($_SESSION['boosters']); //DELETE 



// END PRE-HEADER PROCESSING 

?> 
<!doctype html> 

<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://ogp.me/ns/fb#"> 

<head> 
<meta name="viewport" content="width=device-width, initial-scale=1"> 
<meta charset="utf-8"> 

</head> 
<body> 
</body> 
</html> 

这让我坚强!任何人都知道这究竟是什么造成的?

+0

如何进行'''send_query'''功能是什么样子? – Avalanche

+0

它只是连接并发送与mysqli查询。没有什么奇怪的。我用它所有的时间。 – thinkofacard

+0

功能send_query($ SQL){$ = temprows阵列(); global $ conn; connect(); $ result = $ conn-> query($ sql); 而($行= $ result-> FETCH_ASSOC()){$ temprows [] = $行; } mysqli_free_result($ result); $ conn-> close(); return $ temprows; } – thinkofacard

回答

1

尝试做:

echo '<pre>' . htmlentities(print_r($_SESSION['boosters'], true)) . '</pre>'; 

给人一种true第二个参数print_r()使其返回格式的字符串,而不是直接将其输出。然后htmlentities()将在结果中编码任何HTML语法 - 可能有一些HTML或Javascript导致刷新。我也把它放在<pre>之内,这样格式将被保留。

+0

我试着用你的建议替换print_r,它似乎没有影响到问题。 – thinkofacard