How to use llHTTPRequest
|
SuezanneC Baskerville
Forums Rock!
Join date: 22 Dec 2003
Posts: 14,229
|
05-31-2006 19:48
Well, I installed XAMPP on one machine, set the router to forward port 80, and changed the apache config file to set the ServerName to my public IP.
I can put my public IP into the address bar of a browser on my other machine and it shows an XAMPP page, so I suppose it must be working, i.e, i seem to be running a server.
Now what do I do to get llHTTPRequest to talk to my computer?
_____________________
-
So long to these forums, the vBulletin forums that used to be at forums.secondlife.com. I will miss them.
I can be found on the web by searching for "SuezanneC Baskerville", or go to
http://www.google.com/profiles/suezanne
-
http://lindenlab.tribe.net/ created on 11/19/03.
Members: Ben, Catherine, Colin, Cory, Dan, Doug, Jim, Philip, Phoenix, Richard, Robin, and Ryan
-
|
Keknehv Psaltery
Hacker
Join date: 11 Apr 2005
Posts: 1,185
|
05-31-2006 20:39
I believe you need to do something like this: state_entry() { llHTTPRequest("http://myip/somepage",[HTTP_METHOD,"GET"],""); } //... http_response(key id, integer status, list metadata, string body) { llOwnerSay(body); }
That's the general idea, at least.
|
SuezanneC Baskerville
Forums Rock!
Join date: 22 Dec 2003
Posts: 14,229
|
05-31-2006 21:42
From: Keknehv Psaltery I believe you need to do something like this: state_entry() { llHTTPRequest("http://myip/somepage",[HTTP_METHOD,"GET"],""); } //... http_response(key id, integer status, list metadata, string body) { llOwnerSay(body); }
That's the general idea, at least. Thanks for the response. I think I will need a bit more help than that. I haven't a clue as to what I'm doing. What characterics does "http://myip/somepage" need to have?
_____________________
-
So long to these forums, the vBulletin forums that used to be at forums.secondlife.com. I will miss them.
I can be found on the web by searching for "SuezanneC Baskerville", or go to
http://www.google.com/profiles/suezanne
-
http://lindenlab.tribe.net/ created on 11/19/03.
Members: Ben, Catherine, Colin, Cory, Dan, Doug, Jim, Philip, Phoenix, Richard, Robin, and Ryan
-
|
Geuis Dassin
Filming Path creator
Join date: 3 May 2006
Posts: 565
|
05-31-2006 22:41
Perhaps the better question to ask is "What is it you're trying to do?". I have found through the years this question is often more pertinent than trying to answer questions where folks only partly understand what they're asking. The easiest way to think of llHttpRequest is to think of going to a website. You go to your address bar, put in the URL of the address you want to access, and then Firefox(you are using Firefox, right?) accesses the remote web server and displays the result. Look at this code: llHTTPRequest("http://myip/somepage",[HTTP_METHOD,"GET"],""); This is telling SL to go and access the URL address http://myip/somepage. When your web server responds, its sending SL the results of loading that webpage. When SL creates a new llHTTPRequest, it starts listening for a reply to that specific request. This leads into http_response. http_response(key id, integer status, list metadata, string body) { llOwnerSay(body); } http_response is an EVENT. In other words, when SL expects a reply from a llHTTPReqest, the http_response fires(activates) when that response happens. http_response provides several bits of data. The two most important are "id" and "body". The "id" is the SL UUID that has been temporarily assigned to the specific http_response. A key id is like a social security number for pretty much everything in SL. Its a unique key that lets you reference this individual http_response from other scripts. The "body" is the actual data being returned from the remote webpage. For example, the http://myip/somepage webpage might be: <html> <title>This page</title> <body>This is my page body</body> </html>
So your llHTTPRequest would return that HTML code to the http_response and it is stored in the variable "body". So reference this code again: http_response(key id, integer status, list metadata, string body) { llOwnerSay(body); } And what is happening is that when the http_response fires, its performing llOwnerSay which sends a message *only* to the owner of the script/object this is running in which should be you in this example. The message its sending is "body". One very important thing to remember is that there is a size limit to "body". Its currently 2048 bytes, which is roughly 2 kilobytes. Each kilobyte is 1024 bytes. This means that the amount of data your web page can return is very limited, so you have to put a certain amount of design into how your backend web page is going to respond. This is where a web server scripting language like PHP or Perl comes in handy. Also, you can only make up to 20 llHTTPrequests within a 100 second period before you hit the throttle. Basically that means you have to wait until the 100 seconds has passed before you can send any more requests. Now there are a lot more things that can go into this, however I'm going to stop here because its beyond the scope of your initial question. Based on what you really are trying to do, we can better guide you to the best answer. As an open offer, I do php backend scripting, offer unlimited bandwidth and database access, and I will custom write the php scripts for you and help you integrate them into your LSL scripts for a moderate fee, depending on how complex you are looking. By moderate, I mean *moderate*, like probably no more than a couple thousand $L for really complex projects and even cheaper for simpler stuff.
|
SuezanneC Baskerville
Forums Rock!
Join date: 22 Dec 2003
Posts: 14,229
|
06-01-2006 05:42
Thanks for the response, Geuis. I will try this out and see what happens.
llHTTPRequest sends information at the same time that it is asking for information.
What do you have to have going on in order to be able do something with the information that LSL sends?
What would you have to do to have your computer notify you that it got a http request from the LSL script?
I am not particularly trying to accomplish anything other than learning. I found a very simple way to have SL send some data to your home computer and call a program of your choice, but with the unfortunate need to click on a dialog box, and someone responded in essence that my little discovery was worthless since we have llHTTPRequest. Thus I am trying to see how to use the real command. I have no experience with things like running a server or writing PHP code.
Oh man time to go.
_____________________
-
So long to these forums, the vBulletin forums that used to be at forums.secondlife.com. I will miss them.
I can be found on the web by searching for "SuezanneC Baskerville", or go to
http://www.google.com/profiles/suezanne
-
http://lindenlab.tribe.net/ created on 11/19/03.
Members: Ben, Catherine, Colin, Cory, Dan, Doug, Jim, Philip, Phoenix, Richard, Robin, and Ryan
-
|
Eloise Pasteur
Curious Individual
Join date: 14 Jul 2004
Posts: 1,952
|
06-01-2006 06:16
The way they get to you, depending a bit on the choices you make in the llHTTPRequest call, but they'll make something that looks a bit like: forums.secondlife.com/newreply.php?do=newreply&noquote=1&p=1068707 (which is what I got for this reply).
So in forums.secondlife.com there is a file called newreply.php (which lets us guess it's a php script). In that php there will be something ($_GET or $_POST) that lets the php grab the details that come after the question mark. There will be $_GET['do'], $_GET['noquote'] and $_GET['p'], which will have values 'newreply', '1' and '1068707' respectively.
That bit of php opens a suitable window, with the right boxes, thread titles etc. You can use a basically similar script to run an application it can access on your machine. You could, for example have someipaddress/itunes.php?button=next the php script itunes.php uses the value $_GET['button']=="next" to tell iTunes to play the next track in it's current playlist. You could equally have it play an alert sound or something similar. The details of that are kind of complicated, and depend on your OS, what you want it to do, where the files and things you want to access are etc. I don't have a handy resource for that atm, but I hope someone else will...
|
Geuis Dassin
Filming Path creator
Join date: 3 May 2006
Posts: 565
|
06-01-2006 06:50
From: SuezanneC Baskerville Thanks for the response, Geuis. I will try this out and see what happens.
llHTTPRequest sends information at the same time that it is asking for information.
What do you have to have going on in order to be able do something with the information that LSL sends?
What would you have to do to have your computer notify you that it got a http request from the LSL script?
I am not particularly trying to accomplish anything other than learning. I found a very simple way to have SL send some data to your home computer and call a program of your choice, but with the unfortunate need to click on a dialog box, and someone responded in essence that my little discovery was worthless since we have llHTTPRequest. Thus I am trying to see how to use the real command. I have no experience with things like running a server or writing PHP code.
Oh man time to go. When you say, "I found a very simple way to have SL send some data to your home computer and call a program of your choice" it seems like you are trying to get your computer to do something. Again, its very difficult to answer your question fully because I don't understand what your end goal is. There's *alot* you can do with this stuff, but its also very limited in other ways. For example, if you wanted to click on an object in Second Life and have it open a web page, the only way to do that currently is by using llLoadURL(). That will generate a dialog box asking permission, then load the web page in your default browser. Now apparently in the latest release LL has begun including the much anticipated Mozilla browser directly into SL. If you hit F1 (or Help->HTML Help) you can see this. Its actually using the Mozilla browser inside SL. There's currently no LSL method to access this window as a full web browser, however there is a hack someone did a couple days ago that will let you do so on your own computer. It just wont work for anyone else. /108/bf/110549/1.html
|
SuezanneC Baskerville
Forums Rock!
Join date: 22 Dec 2003
Posts: 14,229
|
06-01-2006 14:07
Here is a beginning php file from php.net: <html> <head> <title>PHP Test</title> </head> <body> <?php echo '<p>Hello World</p>'; ?> </body> </html>
I saved this file in the DocumentRoot directory, and upon entering the url for this file on my other machine, lo and behold, the words "Hello World" appeared. I assume that I should then be able to get "Hello World" returned to the http_response event, since that is the effective value of "body". Testing this will have to wait till after work. What is the wise beginners choice of free PHP IDE's?
_____________________
-
So long to these forums, the vBulletin forums that used to be at forums.secondlife.com. I will miss them.
I can be found on the web by searching for "SuezanneC Baskerville", or go to
http://www.google.com/profiles/suezanne
-
http://lindenlab.tribe.net/ created on 11/19/03.
Members: Ben, Catherine, Colin, Cory, Dan, Doug, Jim, Philip, Phoenix, Richard, Robin, and Ryan
-
|
Keknehv Psaltery
Hacker
Join date: 11 Apr 2005
Posts: 1,185
|
06-01-2006 16:34
I'm not sure there's much in the way of 'IDE's for PHP. Any text or web page editor will work.
EDIT: 1000th post! Hurrah! Okay, I'll stop now...
|
Sator Canetti
Frustrated Catgirl
Join date: 20 Sep 2005
Posts: 130
|
06-01-2006 17:09
There are indeed PHP IDEs. Let's see... Zend Studio: Zend is kinda tied to the whole php thing. 99$ USD Meguma Studio: another good IDE, even has an open source version. NuSphere PhpEd:has good reviews, bit costly. 299-549$USD To name a few...
_____________________
"Have gone to commit suicide. Intend to return from grave Friday. Feed cat." -- A memo by Spider Jerusalem in Transmetropolitan "Some people are like Slinkies; not really good for anything, but they still bring a smile to your face when you push them down a flight of stairs." If you're reading this signature, I've probably just disagreed with you. Welcome to the club 
|
Keknehv Psaltery
Hacker
Join date: 11 Apr 2005
Posts: 1,185
|
06-01-2006 17:27
Zend isn't 'kinda tied' to PHP-- they're the people who wrote it.
|
Sator Canetti
Frustrated Catgirl
Join date: 20 Sep 2005
Posts: 130
|
06-01-2006 17:59
writing it kinda ties 'em to it, doesn't it? *was bored, and feeling sarcastic, so you're lucky a nice thread about the wonders of text editors wasn't in it's place  *
_____________________
"Have gone to commit suicide. Intend to return from grave Friday. Feed cat." -- A memo by Spider Jerusalem in Transmetropolitan "Some people are like Slinkies; not really good for anything, but they still bring a smile to your face when you push them down a flight of stairs." If you're reading this signature, I've probably just disagreed with you. Welcome to the club 
|
SuezanneC Baskerville
Forums Rock!
Join date: 22 Dec 2003
Posts: 14,229
|
06-01-2006 19:47
The website http://www.php-editors.com/ has a nice looking list of php editors at PHP editor reviews. After a quick glance I will try one called PHP Designer 2005, which is freeware. It's feature list is: All-in-one editor to edit, debug, analyze and publish PHP scripts Numerous of enhancements for developer deployment and productivity Syntax highlighting and support for PHP, HTML, XML, CSS, JavaScript, Java, Perl, JavaScript, VB, C#, Java & SQL Automatic indentation and insertion of brackets Automatic code completion while typing Great performance in speed and size Sophisticated streamlined and intuitive interface User-friendly development environment that is comfortable both for beginners and experienced programmers Tabbed multi-document interface Fully customizable Integration with the PHP manual available from php.net with quick keyword search Localhost preview Simple external browser integration with Internet Explorer, Netscape, Firefox and Opera Todo Manager Project Manager FTP Code Libraries Class Browser Templates Snippet Support Now to see if I can get a prim inworld to read my php generated "Hello World" page. --------- a few minutes passes ------------------- Hmm, it worked, after a fashion, but not quite as I expected. I thought I would be the body of the html page my php file produced - the words "Hello World". What I actually got was the entire text of the html file, <html> <head> <title>PHP Test</title> </head> <body> <p>Hello World</p> </body> </html> So the "body" in the parameters for llHTTPRequest does not refer to the "body" section of the html page but rather to all of what is returned by the url you pass to ll HTTP Request. ---- downloaded and installed the php ide "PHP Designer 2006" ------------- This may have been a lucky choice of ide, it suggested getting the XAMPP apache server, PHP, Perl, MySQL, ftpzilla, etc. package, which happens to be the one I already have just installed. The installation instructions for PHP Designer also say to the download the PHP manual from PHP net, which I did. So now I have a somewhat fancy PHP IDE to use instead of a text editor, which has panels for things I don't know how to use, and one panel that can show the php manual for browsing, and which lets you put the cursor in a php function or keyword and it shows the help info in the php manual panel, and a bunch of cool things I will have to figure out later. It would be nice to have my php page return something different each time it gets called, or loaded, or run, or whatever the appropriate verb is. So presumably there would be a time function in PHP, which would allow me to make my page say, "Hello World, the time is such and such.". Except of course I should replace World with Avatar.
_____________________
-
So long to these forums, the vBulletin forums that used to be at forums.secondlife.com. I will miss them.
I can be found on the web by searching for "SuezanneC Baskerville", or go to
http://www.google.com/profiles/suezanne
-
http://lindenlab.tribe.net/ created on 11/19/03.
Members: Ben, Catherine, Colin, Cory, Dan, Doug, Jim, Philip, Phoenix, Richard, Robin, and Ryan
-
|
Geuis Dassin
Filming Path creator
Join date: 3 May 2006
Posts: 565
|
06-01-2006 20:37
llhttprequest doesn't get any data *from* a web server. only sends. http_response body gets the results body in llhttprequest is supposed to be for variables and such. for example: http://www.mydomain.com?value1=cat&value2=dogif your method is POST, then you could put everything after the ? into body. Otherwise, just append it to the url portion. it doesnt seem to make a difference
|
SuezanneC Baskerville
Forums Rock!
Join date: 22 Dec 2003
Posts: 14,229
|
06-01-2006 21:25
From: Geuis Dassin llhttprequest doesn't get any data *from* a web server. only sends. http_response body gets the results body in llhttprequest is supposed to be for variables and such. for example: http://www.mydomain.com?value1=cat&value2=dogif your method is POST, then you could put everything after the ? into body. Otherwise, just append it to the url portion. it doesnt seem to make a difference I hadn't noticed that both ll HTTP Request and http response both have body. And I will probably continue to say from time to time that ll http request gets the data, since it triggers the process that leads to the data being got. So, the "body" in ll http request and the body in http_response aren't the same thing at all. OK. Now, how does one get PHP to emit a time string like "11:30" or some such? I see a function strftime that looks promising. ---- some time passes struggling with strftime ---- Well, I couldn't get strftime to work, didn't know the string concatenators for php, check out the string concatenator operator, which appears to be a period, of all the silly things, Looked up "strftime echo examples php" in google and found on php.net that the operators shown in the PGP Manual aren't all implemented in Windows, and it provided an alternative function, strftime_win32, which implements the formatting constants that the Windows version lacks. I have of course timed out in SL by this time. However, I now have a php file like this: <html> <head> <title>PHP Test</title> </head> <body> <?php function strftime_win32($format, $ts = null) { if (!$ts) $ts = time();
$mapping = array( '%C' => sprintf("%02d", date("Y", $ts) / 100), '%D' => '%m/%d/%y', '%e' => sprintf("%' 2d", date("j", $ts)), '%h' => '%b', '%n' => "\n", '%r' => date("h:i:s", $ts) . " %p", '%R' => date("H:i", $ts), '%t' => "\t", '%T' => '%H:%M:%S', '%u' => ($w = date("w", $ts)) ? $w : 7 ); $format = str_replace( array_keys($mapping), array_values($mapping), $format );
return strftime($format, $ts); } setlocale(LC_TIME, "C"); echo '<p>Hello Avatar, the time is '; echo strftime_win32( "%r", time() ) ; echo ' </p>'; ?> </body> </html> And it does indeed produce a web page that says "Hello Avatar the time is 11:54:04 PM". This is pretty good results for a tired old sign designer. And now the test box in SL says From: someone <html> <head> <title>PHP Test</title> </head> <body> <p>Hello Avatar, the time is 11:57:23 PM </p> </body> </html>
So if I am only interested in producing some data for use in SL, can I get PHP to leave out the <html> <head> and such, or do I absolutely have to use LSL string parsing functions to get the meat out of the nutshell? --- Ahah! --- I bet it's just putting that extra angle bracket stuff there because those are part of my php file, eh?
_____________________
-
So long to these forums, the vBulletin forums that used to be at forums.secondlife.com. I will miss them.
I can be found on the web by searching for "SuezanneC Baskerville", or go to
http://www.google.com/profiles/suezanne
-
http://lindenlab.tribe.net/ created on 11/19/03.
Members: Ben, Catherine, Colin, Cory, Dan, Doug, Jim, Philip, Phoenix, Richard, Robin, and Ryan
-
|
Sator Canetti
Frustrated Catgirl
Join date: 20 Sep 2005
Posts: 130
|
06-01-2006 22:28
From: SuezanneC Baskerville So if I am only interested in producing some data for use in SL, can I get PHP to leave out the <html> <head> and such, or do I absolutely have to use LSL string parsing functions to get the meat out of the nutshell? Here's the great thing. PHP can output HTML... but... it doesn't have to.If you were to do this, for the response... <?php function strftime_win32($format, $ts = null) { if (!$ts) $ts = time();
$mapping = array( '%C' => sprintf("%02d", date("Y", $ts) / 100), '%D' => '%m/%d/%y', '%e' => sprintf("%' 2d", date("j", $ts)), '%h' => '%b', '%n' => "\n", '%r' => date("h:i:s", $ts) . " %p", '%R' => date("H:i", $ts), '%t' => "\t", '%T' => '%H:%M:%S', '%u' => ($w = date("w", $ts)) ? $w : 7 ); $format = str_replace( array_keys($mapping), array_values($mapping), $format );
return strftime($format, $ts); } setlocale(LC_TIME, "C"); echo 'Hello Avatar, the time is '; echo strftime_win32( "%r", time() ); ?> The entire output from the page would be: From: someone Hello Avatar, the time is 11:30 Btw, you can also combine statements into a single line, at the cost of readability... echo 'Hello Avatar, the time is ' . strftime_win32( "%r", time() ); Oh, and just incase the server is set strangely, for applications such as this, where you are only producing text to be served to second life, I would highly consider adding this as the first line: header("Content-type: text/plain"); Just to signify that the content is plain text. As I recall the http_response event only accepts text/* content types. Standard html is text/html, but one can't assure that this is uniform on all installs. You can use PHP to create images, to create flash files, to create pdf files. These may require some additional components (usually included with the install but not activated).
_____________________
"Have gone to commit suicide. Intend to return from grave Friday. Feed cat." -- A memo by Spider Jerusalem in Transmetropolitan "Some people are like Slinkies; not really good for anything, but they still bring a smile to your face when you push them down a flight of stairs." If you're reading this signature, I've probably just disagreed with you. Welcome to the club 
|
SuezanneC Baskerville
Forums Rock!
Join date: 22 Dec 2003
Posts: 14,229
|
06-02-2006 05:46
I added the "header("Content-type: text/plain"  ;" and I am getting "Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files\xampp\htdocs\test.php:1) in ......" message. No time at present to explore why.
_____________________
-
So long to these forums, the vBulletin forums that used to be at forums.secondlife.com. I will miss them.
I can be found on the web by searching for "SuezanneC Baskerville", or go to
http://www.google.com/profiles/suezanne
-
http://lindenlab.tribe.net/ created on 11/19/03.
Members: Ben, Catherine, Colin, Cory, Dan, Doug, Jim, Philip, Phoenix, Richard, Robin, and Ryan
-
|
Minoru Musashi
Oriental Flair
Join date: 20 Oct 2004
Posts: 76
|
Shoutcast Song Information
06-02-2006 06:32
Could something like HTTP Request be used to extract song information from a shoutcast server?
|
Bitzer Balderdash
Dazed and Confused
Join date: 21 Dec 2005
Posts: 246
|
06-02-2006 06:33
Easy.... exactly what it says on the tin - you can only use the header() function in php if it is absolutely the very first thing on the page.
That means that the <?php must be on the very first line of the file, with not even a space before it, and that the header() function call must be called before you call anything else that writes any output.
You need to write all the headers (and cookies, but I doubt you'll want them for LSL) before you write anything else to the output.
hope that helps
|
Sator Canetti
Frustrated Catgirl
Join date: 20 Sep 2005
Posts: 130
|
06-02-2006 08:06
Aye, for most SL applications, I would start the code off like this: <?php header("Content-type: text/plain"); ...
_____________________
"Have gone to commit suicide. Intend to return from grave Friday. Feed cat." -- A memo by Spider Jerusalem in Transmetropolitan "Some people are like Slinkies; not really good for anything, but they still bring a smile to your face when you push them down a flight of stairs." If you're reading this signature, I've probably just disagreed with you. Welcome to the club 
|
SuezanneC Baskerville
Forums Rock!
Join date: 22 Dec 2003
Posts: 14,229
|
06-02-2006 13:42
The header error message was caused by a leading space in front of the "<?" .
Thanks folks. I guess a worthwhile next thing to do would be to make the PHP program do something with the info that LSL sends to the php program.
_____________________
-
So long to these forums, the vBulletin forums that used to be at forums.secondlife.com. I will miss them.
I can be found on the web by searching for "SuezanneC Baskerville", or go to
http://www.google.com/profiles/suezanne
-
http://lindenlab.tribe.net/ created on 11/19/03.
Members: Ben, Catherine, Colin, Cory, Dan, Doug, Jim, Philip, Phoenix, Richard, Robin, and Ryan
-
|
MSo Lambert
Registered User
Join date: 16 Aug 2004
Posts: 101
|
06-03-2006 07:36
From: Minoru Musashi Could something like HTTP Request be used to extract song information from a shoutcast server? Yes, but you'd have to proxy the requests through your own webserver. The reason for this is the User-Agent string - Shoutcast server expects a string that contains the words "  Mozilla Compatible)", otherwise it assumes its not a browser but a streaming client, and doesn't display the status page. I once played with a similar service using llEmail / XML-RPC, which I'm rewriting for llHTTPRequest at the moment. Drop me a line inworld if you need any info.
_____________________
MSo
|
Moonshine Herbst
none
Join date: 19 Jun 2004
Posts: 483
|
06-03-2006 09:14
From: Minoru Musashi Could something like HTTP Request be used to extract song information from a shoutcast server? Yes. I've just made a radio that does it, after MSo's and Rickard's radios that used email to do it stopped working. However, I don't think I'm going to sell it. It requests song info once per minute. If I sell 1,000 of those radios, my web server will get 1,000 hits per minute. So I've just given it to a few close friends, plus I use it at my own venues. Search for Scstats on google or hotscripts.com to find a freeware php routine that does the shoutcast lookup.
|
Paul Churchill
Pie are squared
Join date: 8 Sep 2005
Posts: 53
|
06-04-2006 03:26
From: Sator Canetti Aye, for most SL applications, I would start the code off like this: <?php header("Content-type: text/plain"); ...
I had problems with llHTTPRequest() returning a 415 Status Code and setting the body to "Unsupported or unknown character set". This was even though the web server reported correctly serving the page requested with a 200 OK status. the fix was related to the Content-type header, by setting it like this... <?php header("Content-type: text/plain; charset=UTF-8"); ...
Everything then worked fine. Paul.
_____________________
If there are two ways to interpret something I've said and one of them offends or upsets you, I meant the other one.
|
Sator Canetti
Frustrated Catgirl
Join date: 20 Sep 2005
Posts: 130
|
06-04-2006 07:48
From: Paul Churchill I had problems with llHTTPRequest() returning a 415 Status Code and setting the body to "Unsupported or unknown character set". This was even though the web server reported correctly serving the page requested with a 200 OK status. the fix was related to the Content-type header, by setting it like this... <?php header("Content-type: text/plain; charset=UTF-8"); ...
Everything then worked fine. Paul. Aye, forgot to do the charset, some servers are fun like that too. Thanks 
_____________________
"Have gone to commit suicide. Intend to return from grave Friday. Feed cat." -- A memo by Spider Jerusalem in Transmetropolitan "Some people are like Slinkies; not really good for anything, but they still bring a smile to your face when you push them down a flight of stairs." If you're reading this signature, I've probably just disagreed with you. Welcome to the club 
|