Quantcast
Channel: PHP Freaks: PHP Help
Viewing all articles
Browse latest Browse all 13200

form parameters in include file

$
0
0
Hi, please, I have a strange problem... I do not know how to solve it, I'm trying for numerous hours...
And sorry for my english.
I prepared the following synthesis:
 
---
 
All file in the server root of the web site contain only the statement:
 
<?php require(’server/general.php’); ?>
 
---
 
general.php basically read an external text file which contains the static html code for that web page identified by
 - $currentFileName = basename($_SERVER[’PHP_SELF’]);
and then print his contents.
 
(This approach allows a fluid management of central contents like the menu or links, particolar issues or appearance, and so on, through a file that contains some meta-informations about the site map)
 
general.php concludes itself setting (in javascript) the html parameters (like input or hinnerHTML):
 
<script>
 
<?php
 
$formParameter = isset($_POST[”u”]) ? $_POST[”u”] : ””;
$x = ”xxx”;
 
require(”server/”.$currentFileName);
 
?>
 
</script>
 
---
 
Let be that $formParameter isn’t a void value, for example it is ”Pippo”.
In the file named ”server/”.$currentFileName, there are these statements:
 
print $formParameter; print $x; // this invalidates javascript, but it is now for php debugging
 
[and, correctly, ouput is: ”Pippo”, ”xxx”]
 
if (!existingValue($x)) {
print ”xxxxxxxxxxxxxxx”;
writeLog(”x=_”.$x.”_”);
clientMessage(...some parameter...);
}
 
[and, correctly, no output is done]
 
if (!existingValue($formParameter)) { [And here there is the problem]
print ”yyyyyyyyyyyyyyy”;
// $formParameter = ”abcdef”; [now it is commented]
writeLog(”formParameter is _”.$formParameter.”_”);
clientMessage(...some parameter...);
 
}
 
 
After this if-statement, I print again the parameter:
 
print ”after if: ”.$formParameter;
 
---
 
prefixing that:
 
1# the soubroutine existingValue is only:
function existingValue($T) {
return ( trim($t)!=”” );
}
 
2# the soubroutine writeLog() write something in a text file
 
3# clientMessage() soubroutine postpones to a new web page, writing a message for the user
 
, I see that:
 
A# correctly, no print yyyyyyyyyyyyyyy in the last if-statement
B# ?!?... writeLog executes! writing in the text file the string ”formParameter is __”
C# correctly, not executes clientMessage() soubroutine
D# then the flow of the program behaves as if it had never entered if, so it prints the string ”after if: Pippo”.
 
Moreover, if after the statement
 - print ”yyyyyyyyyyyyyyy”;
I uncomment
 - $formParameter = ”abcdef”;
then output of B# became: ”formParameter is _abcdef_”.
Why yyyyyyyyyyyyyyy isn’t printed (within the javascript code) but $formParameter is setted?
 
Strange. The flow enters in the if-statement (but it should not do!) and does this only partially?
 
---
 
Now, really, it isn’t a serious error because the program works equally (see point D#).
But I need to understand why exists some aspect of the matter in which $formParameter is evalutated void, because I must make the check of client’s input
 
Note: removing the include and carrying hits contents directly in the parent file (general.php), the problem disappears... but I cannot do this, because general.php has a general role, disconnected from a form-input.
 
THANK YOU FOR YOURS ADVICES
 

Viewing all articles
Browse latest Browse all 13200

Trending Articles