Solved

php inclusion acting differntly between 2 pages.

Posted on 2016-09-08
7
35 Views
Last Modified: 2016-09-08
I created a small inclusion to do the query write/update.  It works in page 1, but when I added the code to page 2, it displays the remarks, all the code and does not perform the update.

I've attached the relevant code for the two pages as well as the inclusion.
page1.php
page2.php
IO_inc.php
0
Comment
Question by:breeze351
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2
  • 2
  • +1
7 Comments
 
LVL 31

Expert Comment

by:Marco Gasi
ID: 41790269
It looks like page 2 is not recognized as a php script: is there the php opening tag? In code you posted here that is missing in all files...
1
 
LVL 110

Expert Comment

by:Ray Paseur
ID: 41790314
Agree with Marco.  Please add <?php error_reporting(E_ALL); as the top line of all three scripts, and try it again.  Please let us know if you get different output, or if you get messages that might be associated with these scripts.
0
 

Author Comment

by:breeze351
ID: 41790349
The <?php is at the top of both pages.
I added error_reporting(E_ALL) to the top of page 2.
Got the same results with the display of comments and code.

Just for the halibut, I added <?php ..... ?> to the inclusion.  It processes the code as expected (update worked), however I got the following error message:

Warning: Cannot modify header information - headers already sent by (output started at /home/mrbreez1/public_html/IO_inc.php:25) in /home/mrbreez1/public_html/Update_Tenant.php on line 268

I know what the error means, but the only thing that would cause this is echo statement in the inclusion that isn't executed.
0
Why Off-Site Backups Are The Only Way To Go

You are probably backing up your data—but how and where? Ransomware is on the rise and there are variants that specifically target backups. Read on to discover why off-site is the way to go.

 
LVL 57

Accepted Solution

by:
Julian Hansen earned 250 total points
ID: 41790385
Try removing the closing ?> on the io_inc.php page

The error is saying that some output was sent. This could be a space that comes after the closing ?>

If the page is all PHP code you can omit the closing ?> which prevents any empty spaces at the end of the script being interpreted as output to the browser
i.e
<?php
// **************************************************************
// * IO_inc.php                                                 *
// * Inclusion to preform SQL I/O with error checking.          *
// **************************************************************
// * Version 4.0                                                *
// **************************************************************
// * Modifications:                                             *
// * Ver   By     Date       Description                        *
// * 4.0   GJJD   09/06/16   Created                            *
// *                                                            *
// ************************************************************** 
	$io = $conn->query($SqlString);			
	if (!$io)
	{
		$io_error = "Query Failed: "
		. $SqlString
		. ' ERRNO: '
		. $conn->errno
		. ' ERROR: '
		. $conn->error
		;
		echo $io_error."<br>";
	}

Open in new window

0
 
LVL 110

Assisted Solution

by:Ray Paseur
Ray Paseur earned 250 total points
ID: 41790431
Unless it's absolutely necessary, you never want to use the close-PHP tag.  It creates more problems than it's worth.

"Cannot modify header..." is covered here (check the part about output buffering):
https://www.experts-exchange.com/articles/4423/Warning-Cannot-modify-header-information-headers-already-sent.html

It sounds like the issue might be something in the context or scope of the scripts.  I don't think we have enough information here to debug it (without a lucky guess), so if you can tell us a little more about how these scripts get called, or better yet create the SSCCE that we can install and run on our own servers, that would be very helpful.
0
 

Author Closing Comment

by:breeze351
ID: 41790537
I removed the ?> and it worked.  I don't care right now because it does work, but why would it work on page1 and not page2!
0
 
LVL 57

Expert Comment

by:Julian Hansen
ID: 41790720
Without access to the raw files cannot say. The files you posted seemed sanitized - there were no script tags so assuming they are not strictly the same as the live ones.
0

Featured Post

Secure Your WordPress Site: 5 Essential Approaches

WordPress is the web's most popular CMS, but its dominance also makes it a target for attackers. Our eBook will show you how to:

Prevent costly exploits of core and plugin vulnerabilities
Repel automated attacks
Lock down your dashboard, secure your code, and protect your users

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I imagine that there are some, like me, who require a way of getting currency exchange rates for implementation in web project from time to time, so I thought I would share a solution that I have developed for this purpose. It turns out that Yaho…
Password hashing is better than message digests or encryption, and you should be using it instead of message digests or encryption.  Find out why and how in this article, which supplements the original article on PHP Client Registration, Login, Logo…
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
The viewer will learn how to count occurrences of each item in an array.

717 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question