Bloodrun Posted March 16, 2009 Share Posted March 16, 2009 Hi, to make a long.. long story short.I found this thread:http://www.msfn.org/board/index.php?showtopic=47730While searching about how to make my own Dynamic Signature code.Now to the hard part, I'll try to explain it without sounding crazy.I would like to know how make it, so that my Dynamic sig code, would be created, when someone fills out a form.An example:Name: [bob]Age: [19]Activities: [sports][Generate]Okay, above this is my crude form. I would like to know how to make it so that when a person fills out the form, and hits Generate, the information from that form, will be put into the dynamic sig code, so the person can save it, etc.. etc..I know how to make the form, I just need to know how to make the PHP/PNG codes so that when the form is filled out, everything works correctly.I am very desperate at this point in time, to get this code to work. I have been trying at it for a good 6 months now. I am not very well knowledged in PHP, and I know PHP can get very VERY extensive, but I want to do this, and feel like I have accomplished something. Lol, can you understand that?Well, there, I tried my best not to sound crazy.. I hope you can help me, if not, it's ok. Link to comment Share on other sites More sharing options...
gamehead200 Posted March 17, 2009 Share Posted March 17, 2009 I think I remember making one of these a while back... But mine actually created a new file for each newly generated image to lessen the stress on the server.Anyways, here's my 15 minutes at it assuming the file name is sig.php:<?php$name = $_REQUEST['name'];$age = $_REQUEST['age'];$sports = $_REQUEST['sports'];// check to see if someone's hit generate alreadyif( isset($name) == true && isset($age) == true && isset($sports) == true ) { Header('Content-type: image/png'); Header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0'); Header('Expires: Thu, 19 Nov 1981 08:52:00 GMT'); Header('Pragma: no-cache'); // create image w/ dimensions $img_width = 200; $img_height = 100; $image = imagecreate($img_width, $img_height); // set bg colour $white = imagecolorallocate($image, 255, 255, 255); $black = imagecolorallocate($image, 0, 0, 0); imagefilledrectangle($image, 0, 0, $img_width, $img_height, $white); // border imagefilledrectangle($image, 0, 0, $img_width, 0, $black); imagefilledrectangle($image, 0, $img_height-1, $img_width, $img_height-1, $black); imagefilledrectangle($image, 0, 0, 0, $img_height, $black); imagefilledrectangle($image, $img_width-1, 0, $img_width-1, $img_height, $black); // text ImageTTFText($image, 8, 0, 10, 17, $black, '/path/to/font/file.ttf', "Name: " . $name . "\nAge: " . $age . "\nSports: " . $sports); // output and destroy imagepng($image); imagedestroy($image);} // if not, go ahead and show the formelse { print ("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"> <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en\" xml:lang=\"en\"> <head> <title>Dynamic Signature Generator</title> <meta http-equiv=\"Content-type\" content=\"text/html; charset=ISO-8859-1\" /> <style type=\"text/css\"> body { font-family: tahoma, verdana, arial; } img { verical-align: middle; border-style: none; } </style> </head> <body> <h1>Dynamic Signature Generator</h1> <form method=\"post\" name=\"sig\" action=\"sig.php\"> <small> Name: <input type=\"text\" name=\"name\" value=\"\" /><br /> Age: <input type=\"text\" name=\"age\" value=\"\" /><br /> Sports: <input type=\"text\" name=\"sports\" value=\"\" /><br /> <input type=\"submit\" value=\"Generate\" /> </small> </form> </body> </html>");}?>WARNING: this is a VERY BASIC and slightly INSECURE method of doing it (because I'm not running any checks on what the user is inputting), but it gets the job done. This code should at least give you some insight as to what to expect.Here is the form:And the output of the form:Hope this helps.Cheers, Link to comment Share on other sites More sharing options...
Bloodrun Posted March 18, 2009 Author Share Posted March 18, 2009 Thanks alot man, I finally have something to start from!Lol, this makes me happy. Again, thanks alot.If I come across anymore questions regarding this, would you be willing to help me? Link to comment Share on other sites More sharing options...
gamehead200 Posted March 18, 2009 Share Posted March 18, 2009 Post here and I'll do as best as I can. Link to comment Share on other sites More sharing options...
Bloodrun Posted March 18, 2009 Author Share Posted March 18, 2009 (edited) Okay good, because little knowledge me, already found a problem, lol =/When I try and test it out, I typed things in, and hit generate, and it takes me to a picture of a white square with a black border, but no text =/ I even put in a new text file, and made sure the access "link" to it, was right, and still nothing..EDIT: haha, stupid me, I spelled the folder wrong.Okay next question, Say I had a [select] code on the form, how would I make it so it would appear on the image? meaning how would i write the .php nvmd got that one.What about arrays? or how to place the text where I want it? How would I incorporate that in with the code I have? Edited March 18, 2009 by Bloodrun Link to comment Share on other sites More sharing options...
gamehead200 Posted March 18, 2009 Share Posted March 18, 2009 What about arrays? or how to place the text where I want it? How would I incorporate that in with the code I have?I'm not quite sure what you want to know about arrays... But to answer your other questions...Read up on ImageTTFText here to manipulate the text: http://ca.php.net/manual/en/function.imagettftext.phpNote that you can call ImageTTFText more than once to play in case you want to manipulate each line differently, for example:ImageTTFTextt($image, 8, 0, 10, 17, $black, '/path/to/font/file.ttf', "Name: " . $name);ImageTTFTextt($image, 8, 0, 20, 34, $black, '/path/to/font/file.ttf', "Age: " . $age);ImageTTFTextt($image, 10, 0, 30, 65, $black, '/path/to/font/file.ttf', "Sports: " . $sports);First off, this will not change the appearance of the first line. Secondly, it will shift the second line over further to the right by 10 pixels. Finally, the third line will be shifted downwards a bit more and will appear in size 10pt font instead of size 8pt. Link to comment Share on other sites More sharing options...
Bloodrun Posted March 18, 2009 Author Share Posted March 18, 2009 What about arrays? or how to place the text where I want it? How would I incorporate that in with the code I have?I'm not quite sure what you want to know about arrays... But to answer your other questions...Read up on ImageTTFText here to manipulate the text: http://ca.php.net/manual/en/function.imagettftext.phpNote that you can call ImageTTFText more than once to play in case you want to manipulate each line differently, for example:ImageTTFTextt($image, 8, 0, 10, 17, $black, '/path/to/font/file.ttf', "Name: " . $name);ImageTTFTextt($image, 8, 0, 20, 34, $black, '/path/to/font/file.ttf', "Age: " . $age);ImageTTFTextt($image, 10, 0, 30, 65, $black, '/path/to/font/file.ttf', "Sports: " . $sports);First off, this will not change the appearance of the first line. Secondly, it will shift the second line over further to the right by 10 pixels. Finally, the third line will be shifted downwards a bit more and will appear in size 10pt font instead of size 8pt.Oh, okay, thank you for that, now I have been been trying to get the (select) code to work with the .php, this is what im trying to do, could you point out what im doing wrong?$location = $_REQUEST['location'] { if('home') { $image = @imagecreatefrompng('images/home.png'); } if('school') { $image = @imagecreatefrompng('images/school.png'); } if('work') { $image = @imagecreatefrompng('images/work.png'); } if('mall') { $image = @imagecreatefrompng('images/mall.png'); } if('library') { $image = @imagecreatefrompng('images/library.png'); } if('market') { $image = @imagecreatefrompng('images/market.png'); }}// check to see if someone's hit generate alreadyif( isset($name) == true && isset($age) == true && isset($sports) == true && isset($location) == true)...skipping the stuff I haven't touched yet...// textImageTTFText($image, 8, 0, 10, 17, $black, '/fonts/VAG Round.ttf',"Name: " . $name . "\nAge: " . $age . "\nSports: " . $sports . "\nLocation: " . $location);What I want to do, is for it to get the image of the selected location..Again, I want to thank you for helping me =D Link to comment Share on other sites More sharing options...
gamehead200 Posted March 18, 2009 Share Posted March 18, 2009 Your syntax is incorrect. I highly suggest you do a little background reading on basic programming, specifically PHP, before going any further.The reason it's not working is because you're not doing any comparison on $location. Here's the complete code with a drop-down list to choose your location:<?php$name = $_REQUEST['name'];$age = $_REQUEST['age'];$sports = $_REQUEST['sports'];$location = $_REQUEST['location'];// check to see if someone's hit generate alreadyif( isset($name) == true && isset($age) == true && isset($sports) == true && isset($location) == true ) {Header('Content-type: image/png');Header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');Header('Expires: Thu, 19 Nov 1981 08:52:00 GMT');Header('Pragma: no-cache');// check the locationif($location == "School") { $image = imagecreatefrompng('/full/path/to/images/school.png');}elseif($location == "Work") { $image = imagecreatefrompng('/full/path/to/images/work.png');}elseif($location == "Mall") { $image = imagecreatefrompng('/full/path/to/images/mall.png');}elseif($location == "Library") { $image = imagecreatefrompng('/full/path/to/images/library.png');}elseif($location == "Market") { $image = imagecreatefrompng('/full/path/to/images/market.png');}else { // we'll just set the default image to home $image = imagecreatefrompng('/full/path/to/images/home.png');}// set colours$white = imagecolorallocate($image, 255, 255, 255);$black = imagecolorallocate($image, 0, 0, 0);// textImageTTFText($image, 8, 0, 10, 17, $black, '/full/path/to/verdana.ttf',"Name: " . $name . "\nAge: " . $age . "\nSports: " . $sports);// output and destroyimagepng($image);imagedestroy($image);}// if not, go ahead and show the formelse {print ("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"><html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en\" xml:lang=\"en\"><head><title>Dynamic Signature Generator</title><meta http-equiv=\"Content-type\" content=\"text/html; charset=ISO-8859-1\" /><style type=\"text/css\">body { font-family: tahoma, verdana, arial; }img { verical-align: middle; border-style: none; }</style></head><body><h1>Dynamic Signature Generator</h1><form method=\"post\" name=\"sig\" action=\"sig.php\"><small>Name: <input type=\"text\" name=\"name\" value=\"\" /><br />Age: <input type=\"text\" name=\"age\" value=\"\" /><br />Sports: <input type=\"text\" name=\"sports\" value=\"\" /><br />Location: <select name=\"location\"> <option value=\"Home\">Home</option> <option value=\"School\">School</option> <option value=\"Work\">Work</option> <option value=\"Mall\">Mall</option> <option value=\"Library\">Library</option> <option value=\"Market\">Market</option></select><br /><input type=\"submit\" value=\"Generate\" /></small></form></body></html>");}?>Also, be sure to use the full path to your image and font files. It'll save you time debugging if it ever causes problems otherwise. Link to comment Share on other sites More sharing options...
Bloodrun Posted March 18, 2009 Author Share Posted March 18, 2009 (edited) Your syntax is incorrect. I highly suggest you do a little background reading on basic programming, specifically PHP, before going any further.The reason it's not working is because you're not doing any comparison on $location. Here's the complete code with a drop-down list to choose your location:<?php$name = $_REQUEST['name'];$age = $_REQUEST['age'];$sports = $_REQUEST['sports'];$location = $_REQUEST['location'];// check to see if someone's hit generate alreadyif( isset($name) == true && isset($age) == true && isset($sports) == true && isset($location) == true ) {Header('Content-type: image/png');Header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');Header('Expires: Thu, 19 Nov 1981 08:52:00 GMT');Header('Pragma: no-cache');// check the locationif($location == "School") { $image = imagecreatefrompng('/full/path/to/images/school.png');}elseif($location == "Work") { $image = imagecreatefrompng('/full/path/to/images/work.png');}elseif($location == "Mall") { $image = imagecreatefrompng('/full/path/to/images/mall.png');}elseif($location == "Library") { $image = imagecreatefrompng('/full/path/to/images/library.png');}elseif($location == "Market") { $image = imagecreatefrompng('/full/path/to/images/market.png');}else { // we'll just set the default image to home $image = imagecreatefrompng('/full/path/to/images/home.png');}// set colours$white = imagecolorallocate($image, 255, 255, 255);$black = imagecolorallocate($image, 0, 0, 0);// textImageTTFText($image, 8, 0, 10, 17, $black, '/full/path/to/verdana.ttf',"Name: " . $name . "\nAge: " . $age . "\nSports: " . $sports);// output and destroyimagepng($image);imagedestroy($image);}// if not, go ahead and show the formelse {print ("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"><html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en\" xml:lang=\"en\"><head><title>Dynamic Signature Generator</title><meta http-equiv=\"Content-type\" content=\"text/html; charset=ISO-8859-1\" /><style type=\"text/css\">body { font-family: tahoma, verdana, arial; }img { verical-align: middle; border-style: none; }</style></head><body><h1>Dynamic Signature Generator</h1><form method=\"post\" name=\"sig\" action=\"sig.php\"><small>Name: <input type=\"text\" name=\"name\" value=\"\" /><br />Age: <input type=\"text\" name=\"age\" value=\"\" /><br />Sports: <input type=\"text\" name=\"sports\" value=\"\" /><br />Location: <select name=\"location\"> <option value=\"Home\">Home</option> <option value=\"School\">School</option> <option value=\"Work\">Work</option> <option value=\"Mall\">Mall</option> <option value=\"Library\">Library</option> <option value=\"Market\">Market</option></select><br /><input type=\"submit\" value=\"Generate\" /></small></form></body></html>");}?>Also, be sure to use the full path to your image and font files. It'll save you time debugging if it ever causes problems otherwise.Oh, I had the drop already, I just didn't add it, because I didn't think that was the problem. But thanks for the help with the syntax, it's starting to get cleaer now.I have been using this site, to get the basics of HTML/CSS/PHP/ASP etc:http://www.w3schools.com/php/default.aspThough it doesn't explain the kinda things I need, either that or I'm probably not thinking in general terms with the exmaples their using. Do you have any suggestions as to where I could read up on PHP?EDIT:Ok, i think I messed everything up.I put in the corrections like you wrote it, but the images that are suppose to be called are suppose to be the background of the sig. So after I put the code in, I went to test it out, I filled in the form, and pressed generate, and what came up with just the name of link (as an image) which usually means somethings wrong with the code. After trying everything O could think of, to get it to work, I ended up just removed the "if..elseif...else" code, and replacing everything back to normal. And it still just shows the link as an image =/I keep going two steps up and 4 steps back =/ Edited March 18, 2009 by Bloodrun Link to comment Share on other sites More sharing options...
gamehead200 Posted March 18, 2009 Share Posted March 18, 2009 I use http://www.php.net to read up on PHP.As for your problem, what types of images are you using (i.e., JPEG, PNG, GIF, etc.)? Did you use my exact code or only make changes to yours? Can you post all of your code if it's different than mine so I can check to see what the problem is? Link to comment Share on other sites More sharing options...
Bloodrun Posted March 18, 2009 Author Share Posted March 18, 2009 (edited) I use http://www.php.net to read up on PHP.As for your problem, what types of images are you using (i.e., JPEG, PNG, GIF, etc.)? Did you use my exact code or only make changes to yours? Can you post all of your code if it's different than mine so I can check to see what the problem is?They are all PNG, and here is all of my code:<?php$name = $_REQUEST['name'];$age = $_REQUEST['age'];$sports = $_REQUEST['sports'];$location = $_REQUEST['location'];// check to see if someone's hit generate alreadyif( isset($name) == true && isset($age) == true && isset($sports) == true && isset($location) == true) {Header('Content-type: image/png');Header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');Header('Expires: Thu, 19 Nov 1981 08:52:00 GMT');Header('Pragma: no-cache');// check the locationif($location == "school") {$image = imagecreatefrompng('/full/path/to/images/school.png');}elseif($location == "work") {$image = imagecreatefrompng('/full/path/to/images/work.png');}elseif($location == "mall") {$image = imagecreatefrompng('/full/path/to/images/mall.png');}elseif($location == "library") {$image = imagecreatefrompng('/full/path/to/images/library.png');}elseif($location == "market") {$image = imagecreatefrompng('/full/path/to/images/market.png');}else { // we'll just set the default image to home$image = imagecreatefrompng('/full/path/to/images/home.png');}// textImageTTFText($image, 8, 0, 10, 17, $black, '/fonts/VAG Round.ttf',"Name: " . $name . "\nAge: " . $age . "\nSports: " . $sports);// output and destroyimagepng($image);imagedestroy($image);}// if not, go ahead and show the formelse {print ("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"><html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en\" xml:lang=\"en\"><head><title>Dynamic Signature Generator</title><meta http-equiv=\"Content-type\" content=\"text/html; charset=ISO-8859-1\" /><style type=\"text/css\">body { font-family: tahoma, verdana, arial; }img { verical-align: middle; border-style: none; }</style></head><body><h1>Dynamic Signature Generator</h1><form method=\"post\" name=\"sig\" action=\"sig.php\"><small>Name: <input type=\"text\" name=\"name\" value=\"\" /><br />Age: <input type=\"text\" name=\"age\" value=\"\" /><br />Sports: <input type=\"text\" name=\"sports\" value=\"\" /><br />Location:<select name=\"location\"><option value=\"home\">Home</option><option value=\"school\">School</option><option value=\"work\">Work</option><option value=\"library\">Library</option><option value=\"mall\">Mall</option><option value=\"market\">Market</option></select><br /><br /><input type=\"submit\" value=\"Generate\" /></small></form></body></html>");}?>I want to make it, so that the location chosen, will make the image the background of the entire thing.. Edited March 18, 2009 by Bloodrun Link to comment Share on other sites More sharing options...
gamehead200 Posted March 18, 2009 Share Posted March 18, 2009 OK, first of all, /full/path/to should be replaced with the actual full path to the file. This also applies to your font file as I'm pretty sure you don't have a fonts directory in the root of your filesystem (most likely a subdirectory of some other directory).For example, the full path to the font file on my server is: /home/username/website/sigs/verdana.ttfThe same thing applies to your images (e.g., /home/username/website/sigs/background.png).Remember, this is specific to the server YOU are on, so you have to find this information (assuming you're running this script on a Linux server); the path would of course be different on a Windows server. Link to comment Share on other sites More sharing options...
Bloodrun Posted March 18, 2009 Author Share Posted March 18, 2009 (edited) OK, first of all, /full/path/to should be replaced with the actual full path to the file. This also applies to your font file as I'm pretty sure you don't have a fonts directory in the root of your filesystem (most likely a subdirectory of some other directory).For example, the full path to the font file on my server is: /home/username/website/sigs/verdana.ttfThe same thing applies to your images (e.g., /home/username/website/sigs/background.png).Remember, this is specific to the server YOU are on, so you have to find this information (assuming you're running this script on a Linux server); the path would of course be different on a Windows server.oh lol.. I feel stupid now, I was thinking "/full/path/to/" was a code, I should've known..Lol ok well, right now I am using a free server, so would I actually need the "/home/username/" part?Okay.. yeah it's still not working =/ Edited March 18, 2009 by Bloodrun Link to comment Share on other sites More sharing options...
gamehead200 Posted March 18, 2009 Share Posted March 18, 2009 The easiest way to find the full path is to create a PHP file with the following in it and browsing to it:<?php phpinfo(); ?>Look under SCRIPT_FILENAME for the full path to your sig.php file and you'll be able to figure everything else out from there. Link to comment Share on other sites More sharing options...
Bloodrun Posted March 19, 2009 Author Share Posted March 19, 2009 The easiest way to find the full path is to create a PHP file with the following in it and browsing to it:<?php phpinfo(); ?>Look under SCRIPT_FILENAME for the full path to your sig.php file and you'll be able to figure everything else out from there.Okay well i did all that, and it's still just giving me the link to the page as an image. =/ Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now