dansoto
asked on
PHP Script to Submit Form Data from a list
I have a simple form that I use to send SMS messages to a system we have developed. Generally I type the message into the form manually but I would like to set up an automated system. The system would would automatically send predefined messages at intervals from a list either in a text file or MySql DB. I would prefer to do this in a text file if possible. Here's the scenario:
Text File With Messages to Send:
Who is the king of france?
When is the next U.S. Holiday?
Who's on first?
Current Form:
<form method="get" action="http://254.254.254.254/" target="_self" name="">
<input type="text" name="Data" size="160" value=""><br>
<input type="submit" name="Submit" size="50" value="Send Query">
<input type="hidden" name="OriginatorAddress" value="8005551212">
</form>
The idea is to have this page up in a browser and some mechanism to pull the first line from the text file and submit it. Then it pulls the second line and submits it. Third line...etc.... All of this would happen at predefined intervals (maybe 20 seconds or so).
A PHP or other easy system would be preferred. Thanks.
Text File With Messages to Send:
Who is the king of france?
When is the next U.S. Holiday?
Who's on first?
Current Form:
<form method="get" action="http://254.254.254.254/" target="_self" name="">
<input type="text" name="Data" size="160" value=""><br>
<input type="submit" name="Submit" size="50" value="Send Query">
<input type="hidden" name="OriginatorAddress" value="8005551212">
</form>
The idea is to have this page up in a browser and some mechanism to pull the first line from the text file and submit it. Then it pulls the second line and submits it. Third line...etc.... All of this would happen at predefined intervals (maybe 20 seconds or so).
A PHP or other easy system would be preferred. Thanks.
Sorry got an extra $_SESSION["MessageNum"] = $_SESSION["MessageNum"] + 1;
take it out after fclose($messages);
<?php
session_start();
if(! array_key_exists("MessageN um", $_SESSION)){
$_SESSION["MessageNum"] = 0;
}
if ($messages = fopen("messages.txt", "rb")) {
$messages = explode("\n", fread($messages, filesize("messages.txt"))) ;
$Data = $messages[$_SESSION["Messa geNum"]];
fclose($messages);
if ($_SESSION["MessageNum"] + 1 > sizeof($messages)) {
$Data = "No More Messages";
} else {
$_SESSION["MessageNum"] = $_SESSION["MessageNum"] + 1;
}
} else {
echo "Eorror opening text file";
}
?>
<script language="JavaScript">
function reloadFunction() {
// assuming url of: test.htm - eanables me to test
// may need to parse location.href if the url is not fixed
location.href = '<?php echo $_SERVER['PHP_SELF'];?>';
}
</script>
<body onLoad="setTimeout('reload Function() ',20000)">
<?php
// do whatever you want with that data.
echo $Data;
?>
</body>
Little explanation:
Messages are kept in file messages.txt . Every message must be on a sepparate line. Depending what OS PHP is running on line separator as well as mode of fopen may change. On windows its "rb" on linux its just "r". Windows line separator is "\n" but sometimes has to be "\r\n". Just to keep some things in mind if original doesnt work.
PHP opens the file and goes to needed line that is taken from a session. If there is more lines to come that number will increment so that next time page loads another message is there. If there are no messages it will say "No More Messages" and as soon as there is another message in file it will send it.
Javascript reloads the file every 20 seconds (20000 microseconds i think). This part cannot be done on PHP, because you cannot have PHP scripts hanging in memory. They will be destroyed from memory by a time limit on the server. If its loaded in a browser then its not a problem.
take it out after fclose($messages);
<?php
session_start();
if(! array_key_exists("MessageN
$_SESSION["MessageNum"] = 0;
}
if ($messages = fopen("messages.txt", "rb")) {
$messages = explode("\n", fread($messages, filesize("messages.txt")))
$Data = $messages[$_SESSION["Messa
fclose($messages);
if ($_SESSION["MessageNum"] + 1 > sizeof($messages)) {
$Data = "No More Messages";
} else {
$_SESSION["MessageNum"] = $_SESSION["MessageNum"] + 1;
}
} else {
echo "Eorror opening text file";
}
?>
<script language="JavaScript">
function reloadFunction() {
// assuming url of: test.htm - eanables me to test
// may need to parse location.href if the url is not fixed
location.href = '<?php echo $_SERVER['PHP_SELF'];?>';
}
</script>
<body onLoad="setTimeout('reload
<?php
// do whatever you want with that data.
echo $Data;
?>
</body>
Little explanation:
Messages are kept in file messages.txt . Every message must be on a sepparate line. Depending what OS PHP is running on line separator as well as mode of fopen may change. On windows its "rb" on linux its just "r". Windows line separator is "\n" but sometimes has to be "\r\n". Just to keep some things in mind if original doesnt work.
PHP opens the file and goes to needed line that is taken from a session. If there is more lines to come that number will increment so that next time page loads another message is there. If there are no messages it will say "No More Messages" and as soon as there is another message in file it will send it.
Javascript reloads the file every 20 seconds (20000 microseconds i think). This part cannot be done on PHP, because you cannot have PHP scripts hanging in memory. They will be destroyed from memory by a time limit on the server. If its loaded in a browser then its not a problem.
ASKER
Thanks for your help. The main part of this problem was for it submit each line in the messages.txt in the same manner as I would have done it manually. How do I accomplish this?
Thanks,
- dan -
Thanks,
- dan -
I am not sure i understand the difference between typing the message one by one in the form and dumping all the messages in the text file message-per-line and have the script send each one of them out (those same messages that you normally would type)
What is that manner?
BTW with that script there is no need for a form.
What can happen is where i have // do whatever you want with that data.
you could pass variable $data to your SMS sending system at that poing together with any other info. That also means that SMS sending code and my script need to be on the same page.
What is that manner?
BTW with that script there is no need for a form.
What can happen is where i have // do whatever you want with that data.
you could pass variable $data to your SMS sending system at that poing together with any other info. That also means that SMS sending code and my script need to be on the same page.
ASKER
Sounds good but this is why I came for help :)
Can you write out what the line needs to be to pass that info on as I do in the form?
<form method="get" action="http://254.254.254.254/" target="_self" name="">
<input type="text" name="Data" size="160" value=""><br>
<input type="submit" name="Submit" size="50" value="Send Query">
<input type="hidden" name="OriginatorAddress" value="8005551212">
</form>
Thanks again..
- dan -
Can you write out what the line needs to be to pass that info on as I do in the form?
<form method="get" action="http://254.254.254.254/" target="_self" name="">
<input type="text" name="Data" size="160" value=""><br>
<input type="submit" name="Submit" size="50" value="Send Query">
<input type="hidden" name="OriginatorAddress" value="8005551212">
</form>
Thanks again..
- dan -
This is a GET type of form. So on your action page (whatever you have instead of http://254.254.254.254), provided that its written in php you should see $_GET["Data"], $_GET["Submit"] and $_GET["OriginatorAddress"]
Once you put my code on top of action page you can either change all the variables mentioned above to $Data, $Submit, $OriginatorAddress. Then in my code you could add in the portion
<?php
// do whatever you want with that data.
$Submit = "Send Query";
$OriginatorAddress = 8005551212;
?>
You can also have an option (which is a bad practice) to do this:
<?php
// do whatever you want with that data.
$_GET["Data"] = $Data;
$_GET["Submit"] = "Send Query";
$_GET["OriginatorAddress"] = 8005551212;
?>
Once you put my code on top of action page you can either change all the variables mentioned above to $Data, $Submit, $OriginatorAddress. Then in my code you could add in the portion
<?php
// do whatever you want with that data.
$Submit = "Send Query";
$OriginatorAddress = 8005551212;
?>
You can also have an option (which is a bad practice) to do this:
<?php
// do whatever you want with that data.
$_GET["Data"] = $Data;
$_GET["Submit"] = "Send Query";
$_GET["OriginatorAddress"]
?>
ASKER
Ok..sorry for being a hassle but here's the deal. The only page I have access to is the page on which my current, simple form is located. Currently, when I submit via my form, this is the URL that comes up
http://254.254.254.78/?Data=how+old+is+nicole+kidman&Submit=Send+Query&OriginatorAddress=8005551212
Can I make this happen with just your one page?
Thanks,
- dan -
http://254.254.254.78/?Data=how+old+is+nicole+kidman&Submit=Send+Query&OriginatorAddress=8005551212
Can I make this happen with just your one page?
Thanks,
- dan -
Sorry for the wait. My laptop is going :(
<html><head>
<?php
session_start();
if(! array_key_exists("MessageN um", $_SESSION)){
$_SESSION["MessageNum"] = 0;
}
if ($messages = fopen("messages.txt", "rb")) {
$messages = explode("\n", fread($messages, filesize("messages.txt"))) ;
$Data = $messages[$_SESSION["Messa geNum"]];
fclose($messages);
if ($_SESSION["MessageNum"] + 1 > sizeof($messages)) {
$Data = "No More Messages";
} else {
$_SESSION["MessageNum"] = $_SESSION["MessageNum"] + 1;
}
$Data = trim($Data);
} else {
echo "Error opening text file";
}
?>
<script language="JavaScript">
// stores the reference to the XMLHttpRequest object
var xmlHttp = createXmlHttpRequestObject ();
// retrieves the XMLHttpRequest object
function createXmlHttpRequestObject ()
{
var xmlHttp;
if(window.ActiveXObject){
try
{
xmlHttp = new ActiveXObject("Microsoft.X MLHTTP");
}
catch (e)
{
xmlHttp = false;
}
} else {
try
{
xmlHttp = new XMLHttpRequest();
}
catch (e)
{
xmlHttp = false;
}
}
if (!xmlHttp)
alert("Error creating the XMLHttpRequest object.");
else
return xmlHttp;
}
SendMessage();
function SendMessage()
{
if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0) {
var message;
name = "<?php echo $Data;?>" + "&Submit=Send Query&OriginatorAddress=80 05551212";
name = encodeURIComponent(name);
xmlHttp.open("GET", "timedresults.php?name=" + name, true);
xmlHttp.send(null);
} else {
setTimeout('process()', 1000);
}
}
function reloadFunction() {
location.href = '<?php echo $_SERVER['PHP_SELF'];?>';
}
</script>
</head>
<body onLoad="setTimeout('reload Function() ',20000)">
</body>
</html>
<html><head>
<?php
session_start();
if(! array_key_exists("MessageN
$_SESSION["MessageNum"] = 0;
}
if ($messages = fopen("messages.txt", "rb")) {
$messages = explode("\n", fread($messages, filesize("messages.txt")))
$Data = $messages[$_SESSION["Messa
fclose($messages);
if ($_SESSION["MessageNum"] + 1 > sizeof($messages)) {
$Data = "No More Messages";
} else {
$_SESSION["MessageNum"] = $_SESSION["MessageNum"] + 1;
}
$Data = trim($Data);
} else {
echo "Error opening text file";
}
?>
<script language="JavaScript">
// stores the reference to the XMLHttpRequest object
var xmlHttp = createXmlHttpRequestObject
// retrieves the XMLHttpRequest object
function createXmlHttpRequestObject
{
var xmlHttp;
if(window.ActiveXObject){
try
{
xmlHttp = new ActiveXObject("Microsoft.X
}
catch (e)
{
xmlHttp = false;
}
} else {
try
{
xmlHttp = new XMLHttpRequest();
}
catch (e)
{
xmlHttp = false;
}
}
if (!xmlHttp)
alert("Error creating the XMLHttpRequest object.");
else
return xmlHttp;
}
SendMessage();
function SendMessage()
{
if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0) {
var message;
name = "<?php echo $Data;?>" + "&Submit=Send Query&OriginatorAddress=80
name = encodeURIComponent(name);
xmlHttp.open("GET", "timedresults.php?name=" + name, true);
xmlHttp.send(null);
} else {
setTimeout('process()', 1000);
}
}
function reloadFunction() {
location.href = '<?php echo $_SERVER['PHP_SELF'];?>';
}
</script>
</head>
<body onLoad="setTimeout('reload
</body>
</html>
Sorry.
xmlHttp.open("GET", "timedresults.php?name=" + name, true);
is out to be
xmlHttp.open("GET", "254.254.254.78?name=" + name, true);
xmlHttp.open("GET", "timedresults.php?name=" + name, true);
is out to be
xmlHttp.open("GET", "254.254.254.78?name=" + name, true);
ASKER
Doesn't seem to do anything :( Before at least I could see the messages in the browser as they were retrieved (but never sent). Is there anyway I can see those again and possible what is sent with each Get so I can confirm what is being sent to 255.255.255.255 ?
Normally the server returns a message back to the browser like:
========================== ========== =======
Received query from phone number 8005551212:
how old is nicole kidman
========================== ========== =======
That way I know it was sent successfully...
Normally the server returns a message back to the browser like:
==========================
Received query from phone number 8005551212:
how old is nicole kidman
==========================
That way I know it was sent successfully...
Thats true, my script doesnt return anything. However, in using your URL example it should send the values to your SMS. Is there any way you can check for the arrival of your SMSs?
I got to agree, my program seems scary without any apparent output :)
I will try to modify to capture server output.
I got to agree, my program seems scary without any apparent output :)
I will try to modify to capture server output.
ASKER
I did check and our system didn't receive any of the messages... :(
Thanks again for your continued help..
Thanks again for your continued help..
This is the way i did the script and it worked for me.
I had a page called timedextract.php with all of that code. It passed messages from messages.txt on to a page timedresults.php which recorded the messages into a file output.txt with the code
<?php
$filename = 'output.txt';
$somecontent = $_GET["name"];
// Let's make sure the file exists and is writable first.
if (is_writable($filename)) {
if (!$handle = fopen($filename, 'a')) {
echo "Cannot open file ($filename)";
exit;
}
if (fwrite($handle, $somecontent) === FALSE) {
echo "Cannot write to file ($filename)";
exit;
}
echo "Success, wrote ($somecontent) to file ($filename)";
fclose($handle);
} else {
echo "The file $filename is not writable";
}
?>
So in the end all messages from messages.txt were transfered to output.txt
If it doesnt work on yours, then perhaps i got the URL transmition variables wrong somewhere around
name = "<?php echo $Data;?>" + "&Submit=Send Query&OriginatorAddress=80 05551212";
name = encodeURIComponent(name);
xmlHttp.open("GET", "timedresults.php?name=" + name, true);
For starters, does it at least refresh every 20 seconds?
I had a page called timedextract.php with all of that code. It passed messages from messages.txt on to a page timedresults.php which recorded the messages into a file output.txt with the code
<?php
$filename = 'output.txt';
$somecontent = $_GET["name"];
// Let's make sure the file exists and is writable first.
if (is_writable($filename)) {
if (!$handle = fopen($filename, 'a')) {
echo "Cannot open file ($filename)";
exit;
}
if (fwrite($handle, $somecontent) === FALSE) {
echo "Cannot write to file ($filename)";
exit;
}
echo "Success, wrote ($somecontent) to file ($filename)";
fclose($handle);
} else {
echo "The file $filename is not writable";
}
?>
So in the end all messages from messages.txt were transfered to output.txt
If it doesnt work on yours, then perhaps i got the URL transmition variables wrong somewhere around
name = "<?php echo $Data;?>" + "&Submit=Send Query&OriginatorAddress=80
name = encodeURIComponent(name);
xmlHttp.open("GET", "timedresults.php?name=" + name, true);
For starters, does it at least refresh every 20 seconds?
Yes my URL makes no sense at all.
This will still not produce any confirmation but hopefull contact your SMS, provided that my data, submit and originationaddress are in correct format.
<html><head>
<?php
session_start();
if(! array_key_exists("MessageN um", $_SESSION)){
$_SESSION["MessageNum"] = 0;
}
if ($messages = fopen("messages.txt", "rb")) {
$messages = explode("\n", fread($messages, filesize("messages.txt"))) ;
$Data = $messages[$_SESSION["Messa geNum"]];
fclose($messages);
if ($_SESSION["MessageNum"] + 1 > sizeof($messages)) {
$Data = "No More Messages";
} else {
$_SESSION["MessageNum"] = $_SESSION["MessageNum"] + 1;
}
$Data = trim($Data);
} else {
echo "Error opening text file";
}
?>
<script language="JavaScript">
// stores the reference to the XMLHttpRequest object
var xmlHttp = createXmlHttpRequestObject ();
// retrieves the XMLHttpRequest object
function createXmlHttpRequestObject ()
{
var xmlHttp;
if(window.ActiveXObject){
try
{
xmlHttp = new ActiveXObject("Microsoft.X MLHTTP");
}
catch (e)
{
xmlHttp = false;
}
} else {
try
{
xmlHttp = new XMLHttpRequest();
}
catch (e)
{
xmlHttp = false;
}
}
if (!xmlHttp)
alert("Error creating the XMLHttpRequest object.");
else
return xmlHttp;
}
SendMessage();
function SendMessage()
{
if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0) {
var data = "<?php echo $Data;?>";
var submit;
var OriginatorAddress;
data = encodeURIComponent(data);
submit = encodeURIComponent("Send Query");
OriginatorAddress = encodeURIComponent("800555 1212");
xmlHttp.open("GET", "timedresults.php?Data=" + data + "&Submit=" + submit + "&OriginatorAddress=" + OriginatorAddress, true);
xmlHttp.send(null);
} else {
setTimeout('process()', 1000);
}
}
function reloadFunction() {
location.href = '<?php echo $_SERVER['PHP_SELF'];?>';
}
</script>
</head>
<body onLoad="setTimeout('reload Function() ',2000)">
</body>
</html>
This will still not produce any confirmation but hopefull contact your SMS, provided that my data, submit and originationaddress are in correct format.
<html><head>
<?php
session_start();
if(! array_key_exists("MessageN
$_SESSION["MessageNum"] = 0;
}
if ($messages = fopen("messages.txt", "rb")) {
$messages = explode("\n", fread($messages, filesize("messages.txt")))
$Data = $messages[$_SESSION["Messa
fclose($messages);
if ($_SESSION["MessageNum"] + 1 > sizeof($messages)) {
$Data = "No More Messages";
} else {
$_SESSION["MessageNum"] = $_SESSION["MessageNum"] + 1;
}
$Data = trim($Data);
} else {
echo "Error opening text file";
}
?>
<script language="JavaScript">
// stores the reference to the XMLHttpRequest object
var xmlHttp = createXmlHttpRequestObject
// retrieves the XMLHttpRequest object
function createXmlHttpRequestObject
{
var xmlHttp;
if(window.ActiveXObject){
try
{
xmlHttp = new ActiveXObject("Microsoft.X
}
catch (e)
{
xmlHttp = false;
}
} else {
try
{
xmlHttp = new XMLHttpRequest();
}
catch (e)
{
xmlHttp = false;
}
}
if (!xmlHttp)
alert("Error creating the XMLHttpRequest object.");
else
return xmlHttp;
}
SendMessage();
function SendMessage()
{
if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0) {
var data = "<?php echo $Data;?>";
var submit;
var OriginatorAddress;
data = encodeURIComponent(data);
submit = encodeURIComponent("Send Query");
OriginatorAddress = encodeURIComponent("800555
xmlHttp.open("GET", "timedresults.php?Data=" + data + "&Submit=" + submit + "&OriginatorAddress=" + OriginatorAddress, true);
xmlHttp.send(null);
} else {
setTimeout('process()', 1000);
}
}
function reloadFunction() {
location.href = '<?php echo $_SERVER['PHP_SELF'];?>';
}
</script>
</head>
<body onLoad="setTimeout('reload
</body>
</html>
I need to remember to replace xmlHttp.open("GET", "timedresults.php? with
xmlHttp.open("GET", "254.254.254.78?
everytime i post here......
xmlHttp.open("GET", "254.254.254.78?
everytime i post here......
ASKER
Unfortunately, it's still not working correctly. The URL that gets sent normally, is in this format:
http:/255.255.255.255/?Data=test+query&Submit=Send+Query&OriginatorAddress=8005551212
http:/255.255.255.255/?Data=test+query&Submit=Send+Query&OriginatorAddress=8005551212
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
That way URL passed on looks exactly as the one you gave me. (just in case avoid characters like ?, it produces system dependant ASCII code that your SMS may not understand), so if it still doesnt work, then there is something else important i dont know about that SMS.
ASKER
Do I need to replace:
xmlHttp.open("GET", "timedresults.php?<?php echo $SMSstring; ?>", true);
with something this time ?
xmlHttp.open("GET", "timedresults.php?<?php echo $SMSstring; ?>", true);
with something this time ?
I never learn. Yes
xmlHttp.open("GET", "timedresults.php?<?php echo $SMSstring; ?>", true); must be
xmlHttp.open("GET", "255.255.255.255?<?php echo $SMSstring; ?>", true);
This is an IP address you have, so different browsers can go picky about it. If anything try variations of http://255.255.255.255? or http://255.255.255.255/? or just IP. Bottom line is
everything between xmlHttp.open("GET", " and ?<?php echo $
is your sms address.
xmlHttp.open("GET", "timedresults.php?<?php echo $SMSstring; ?>", true); must be
xmlHttp.open("GET", "255.255.255.255?<?php echo $SMSstring; ?>", true);
This is an IP address you have, so different browsers can go picky about it. If anything try variations of http://255.255.255.255? or http://255.255.255.255/? or just IP. Bottom line is
everything between xmlHttp.open("GET", " and ?<?php echo $
is your sms address.
Still not working?
ASKER
Sorry but I was never able to get this to work. I will however award you the points for your hard work and time.
Thanks,
- dan -
Thanks,
- dan -
Thanks. I appreciate that, although feel somewhat bad about it, but it helps my record :).
Since it works for me (as it outputs the URL of your requirement), there must be something else about the SMS that we dont know. Is there anyway you can contact the programmer/administrator in charge of that, and ask what are the requirements, and perhaps show them my code?
Since it works for me (as it outputs the URL of your requirement), there must be something else about the SMS that we dont know. Is there anyway you can contact the programmer/administrator in charge of that, and ask what are the requirements, and perhaps show them my code?
ASKER
The problem is not about SMS really. I can't really verify that the URL is being formatted correctly..unfortunately.
Did you ever try to send messages that do not contain spaces??
Different browsers, OSs could generate different URLs. For example the debugger of PHPed showed me the pluses where they are out to be (making my url look exactly like yours, so i got happy and gave you the code). When i switched the debuggers, OS, and browsers, i get something totally different. Go figure. So i'll try to give you some basic tips on how to figure out how to get the results to work on yours, because its just impossible for me to get the same environment as you are. I wonder what other experts would say about this.
Heres what you can do. Grab a copy of http debugger from http://maxq.tigris.org/
When you configure it and your browser proxy propperly (must read the guide), it will output exactly what and how is being sent and received by the browser (including our troublesome URL).
To set up a testing environment. Make 2 files. First one i called timedextract.php. Put in the code i gave you. BTW, i made yet another modification to it. This time i decided not to rely on any automatic URL encoding and did it manually (replace spaces with pluses). I also added some outputs to help see how data looks at different points. You can add more by typing echo $varname, if its in php section or document.write(varname) if its JS section.
(check this version on sms first)
<html><head>
<?php
session_start();
if(! array_key_exists("MessageN um", $_SESSION)){
$_SESSION["MessageNum"] = 0;
}
if ($messages = fopen("messages.txt", "rb")) {
$messages = explode("\n", fread($messages, filesize("messages.txt"))) ;
$Data = $messages[$_SESSION["Messa geNum"]];
fclose($messages);
if ($_SESSION["MessageNum"] + 1 > sizeof($messages)) {
$Data = "No More Messages";
} else {
$_SESSION["MessageNum"] = $_SESSION["MessageNum"] + 1;
}
$Data = trim($Data);
$Data = str_replace(" ","+",$Data);
$Submit = str_replace(" ","+","Send Query");
$OriginatorAddress = str_replace(" ","+","8005551212");
echo $Data;
} else {
echo "Error opening text file";
}
?>
<script language="JavaScript">
// stores the reference to the XMLHttpRequest object
var xmlHttp = createXmlHttpRequestObject ();
// retrieves the XMLHttpRequest object
function createXmlHttpRequestObject ()
{
var xmlHttp;
if(window.ActiveXObject){
try
{
xmlHttp = new ActiveXObject("Microsoft.X MLHTTP");
}
catch (e)
{
xmlHttp = false;
}
} else {
try
{
xmlHttp = new XMLHttpRequest();
}
catch (e)
{
xmlHttp = false;
}
}
if (!xmlHttp)
alert("Error creating the XMLHttpRequest object.");
else
return xmlHttp;
}
SendMessage();
function SendMessage()
{
if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0) {
var data = "<?php echo $Data;?>";
var submit = "<?php echo $Submit;?>";
var OriginatorAddress = "<?php echo $OriginatorAddress;?>";
data = encodeURIComponent(data);
submit = encodeURIComponent(submit) ;
OriginatorAddress = encodeURIComponent(Origina torAddress );
xmlHttp.open("GET", "timedresults.php?Data=" + data + "&Submit=" + submit + "&OriginatorAddress=" + OriginatorAddress, true);
xmlHttp.send(null);
} else {
setTimeout('process()', 1000);
}
}
function reloadFunction() {
location.href = '<?php echo $_SERVER['PHP_SELF'];?>';
}
</script>
</head>
<body onLoad="setTimeout('reload Function() ',2000)">
</body>
</html>
Second file will receive the messages so you can see how they arrive. I called it timedresults.php
<?php
$filename = 'output.txt';
$somecontent = $_GET["Data"];
//uncomment next line if you explicitly converted spaces to pluses and dont want to see pluses in the output
//$somecontent = str_replace("+", " ", $somecontent);
// Let's make sure the file exists and is writable first.
if (is_writable($filename)) {
if (!$handle = fopen($filename, 'a')) {
echo "Cannot open file ($filename)";
exit;
}
if (fwrite($handle, $somecontent) === FALSE) {
echo "Cannot write to file ($filename)";
exit;
}
echo "Success, wrote ($somecontent) to file ($filename)";
fclose($handle);
} else {
echo "The file $filename is not writable";
}
?>
check output.txt for results. Create it manually just in case.
To get the satisfied output from the debugger. You may want to play around with sections like after $Data = trim($Data); Either use or dont use http_build_query.
Then play with section above
xmlHttp.open("GET", "timedresults.php?<?php echo $SMSstring; ?>", true);
to use JS to encode automatically or manualy.
Start out by testing messages in the messages.txt that have nothing special in them. No spaces, no questions marks, nothing but a-z. Once you get the desired results in MaxQ output try to change the "timedresults.php?<?
to "sms?<?
May be i am just not an expert enough, but i dont know what else to do from here on. If you feel like going through this, and get anything check back.
Different browsers, OSs could generate different URLs. For example the debugger of PHPed showed me the pluses where they are out to be (making my url look exactly like yours, so i got happy and gave you the code). When i switched the debuggers, OS, and browsers, i get something totally different. Go figure. So i'll try to give you some basic tips on how to figure out how to get the results to work on yours, because its just impossible for me to get the same environment as you are. I wonder what other experts would say about this.
Heres what you can do. Grab a copy of http debugger from http://maxq.tigris.org/
When you configure it and your browser proxy propperly (must read the guide), it will output exactly what and how is being sent and received by the browser (including our troublesome URL).
To set up a testing environment. Make 2 files. First one i called timedextract.php. Put in the code i gave you. BTW, i made yet another modification to it. This time i decided not to rely on any automatic URL encoding and did it manually (replace spaces with pluses). I also added some outputs to help see how data looks at different points. You can add more by typing echo $varname, if its in php section or document.write(varname) if its JS section.
(check this version on sms first)
<html><head>
<?php
session_start();
if(! array_key_exists("MessageN
$_SESSION["MessageNum"] = 0;
}
if ($messages = fopen("messages.txt", "rb")) {
$messages = explode("\n", fread($messages, filesize("messages.txt")))
$Data = $messages[$_SESSION["Messa
fclose($messages);
if ($_SESSION["MessageNum"] + 1 > sizeof($messages)) {
$Data = "No More Messages";
} else {
$_SESSION["MessageNum"] = $_SESSION["MessageNum"] + 1;
}
$Data = trim($Data);
$Data = str_replace(" ","+",$Data);
$Submit = str_replace(" ","+","Send Query");
$OriginatorAddress = str_replace(" ","+","8005551212");
echo $Data;
} else {
echo "Error opening text file";
}
?>
<script language="JavaScript">
// stores the reference to the XMLHttpRequest object
var xmlHttp = createXmlHttpRequestObject
// retrieves the XMLHttpRequest object
function createXmlHttpRequestObject
{
var xmlHttp;
if(window.ActiveXObject){
try
{
xmlHttp = new ActiveXObject("Microsoft.X
}
catch (e)
{
xmlHttp = false;
}
} else {
try
{
xmlHttp = new XMLHttpRequest();
}
catch (e)
{
xmlHttp = false;
}
}
if (!xmlHttp)
alert("Error creating the XMLHttpRequest object.");
else
return xmlHttp;
}
SendMessage();
function SendMessage()
{
if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0) {
var data = "<?php echo $Data;?>";
var submit = "<?php echo $Submit;?>";
var OriginatorAddress = "<?php echo $OriginatorAddress;?>";
data = encodeURIComponent(data);
submit = encodeURIComponent(submit)
OriginatorAddress = encodeURIComponent(Origina
xmlHttp.open("GET", "timedresults.php?Data=" + data + "&Submit=" + submit + "&OriginatorAddress=" + OriginatorAddress, true);
xmlHttp.send(null);
} else {
setTimeout('process()', 1000);
}
}
function reloadFunction() {
location.href = '<?php echo $_SERVER['PHP_SELF'];?>';
}
</script>
</head>
<body onLoad="setTimeout('reload
</body>
</html>
Second file will receive the messages so you can see how they arrive. I called it timedresults.php
<?php
$filename = 'output.txt';
$somecontent = $_GET["Data"];
//uncomment next line if you explicitly converted spaces to pluses and dont want to see pluses in the output
//$somecontent = str_replace("+", " ", $somecontent);
// Let's make sure the file exists and is writable first.
if (is_writable($filename)) {
if (!$handle = fopen($filename, 'a')) {
echo "Cannot open file ($filename)";
exit;
}
if (fwrite($handle, $somecontent) === FALSE) {
echo "Cannot write to file ($filename)";
exit;
}
echo "Success, wrote ($somecontent) to file ($filename)";
fclose($handle);
} else {
echo "The file $filename is not writable";
}
?>
check output.txt for results. Create it manually just in case.
To get the satisfied output from the debugger. You may want to play around with sections like after $Data = trim($Data); Either use or dont use http_build_query.
Then play with section above
xmlHttp.open("GET", "timedresults.php?<?php echo $SMSstring; ?>", true);
to use JS to encode automatically or manualy.
Start out by testing messages in the messages.txt that have nothing special in them. No spaces, no questions marks, nothing but a-z. Once you get the desired results in MaxQ output try to change the "timedresults.php?<?
to "sms?<?
May be i am just not an expert enough, but i dont know what else to do from here on. If you feel like going through this, and get anything check back.
session_start();
if(! array_key_exists("MessageN
$_SESSION["MessageNum"] = 0;
}
if ($messages = fopen("messages.txt", "rb")) {
$messages = explode("\n", fread($messages, filesize("messages.txt")))
$Data = $messages[$_SESSION["Messa
fclose($messages);
$_SESSION["MessageNum"] = $_SESSION["MessageNum"] + 1;
if ($_SESSION["MessageNum"] + 1 > sizeof($messages)) {
$Data = "No More Messages";
} else {
$_SESSION["MessageNum"] = $_SESSION["MessageNum"] + 1;
}
} else {
echo "Eorror opening text file";
}
?>
<script language="JavaScript">
function reloadFunction() {
// assuming url of: test.htm - eanables me to test
// may need to parse location.href if the url is not fixed
location.href = '<?php echo $_SERVER['PHP_SELF'];?>';
}
</script>
<body onLoad="setTimeout('reload
<?php
// do whatever you want with that data.
echo $Data;
?>
</body>