• 0

Dynamic Signatures


Question

How would I make a signature that allows users to put a piece of text into my signature? I know you can use PHP, but I don't have the slightest clue about PHP

(Apart from Cutenews stuff)

Could someone make me a saple signature, very plain, and show me how to allow users to imput text into it thru my website?

Edited by TimRogers
Link to comment
https://www.neowin.net/forum/topic/301987-dynamic-signatures/
Share on other sites

Recommended Posts

  • 0

Hey,

I just went through a whole learning process about this.

The result are my two signature images.

One conjurs up data output by an iTunes plugin, and the other is a random quotes.

I will post the sourece for the latter:

<?php

// tell the user's browser that it is an image
header("Content-type: image/png");

// load the background
$image = imagecreatefrompng("quote.png");

// define the color black (the colour of the text)
$clr_black = imagecolorallocate($image, 0, 0, 0);
$clr_white = imagecolorallocate($image, 255, 255, 255);

// Now let's add the text

// define the font, x_position
// how much the y_position changes (increments)
$line_number = 1;

//Get a random number
$num = rand(1,3);

//Start the switch function
switch ($num) {
//First Quote
case 1:
$quote = "Nothing strengthens authority so much as silence.";
$author = "Leonardo Da Vinci";
break;
//Second Quote
case 2:
$quote = "My life is one long curve, full of turning points.";
$author = "Pierre Elliott Trudeau";
break;
case 3:
$quote = "It\'s amazing what you can accomplish if you do not care who gets the credit. This is a test";
$author = "Leonardo Da Vinci";
break;
}
//Add text to image (img, size, angle, x,y, colour, .ttf, text)
ImageTTFText($image, 8, 0, 10, 50, $clr_black, "verdanai.TTF", stripslashes($author));
ImageTTFText($image, 9, 0, 10, 15, $clr_black, "verdana.TTF", wordwrap(stripslashes($quote), 80));

// and now... we display the image
imagepng($image);
imagedestroy($image);
?>

If your understanding PHP is average, you should be able to pick this apart, and use what you need.

If you need more detailed instructions on how to use this, reply accordingly and I will post a description of the script.

-Ax

  • 0

Try these:

Random Banner:

<script LANGUAGE="Javascript"><!--

// ***********************************************
// AUTHOR: WWW.CGISCRIPT.NET, LLC
// URL: http://www.cgiscript.net
// Use the script, just leave this message intact.
// Download your FREE CGI/Perl Scripts today!
// ( http://www.cgiscript.net/scripts.htm )
// ***********************************************

function banner() {
};

banner = new banner();
number = 0;

// bannerArray
banner[number++] = "<a href='http://www.url1.com' target='_blank'><img src='images/banner-1.gif' border='0'></a>"
banner[number++] = "<a href='http://www.url2.com' target='_blank'><img src='images/banner-2.gif' border='0'></a>"
banner[number++] = "<a href='http://www.url3.com' target='_blank'><img src='images/banner-3.gif' border='0'></a>"
banner[number++] = "<a href='http://www.url4.com' target='_blank'><img src='images/banner-4.gif' border='0'></a>"
banner[number++] = "<a href='http://www.url5.com' target='_blank'><img src='images/banner-5.gif' border='0'></a>"
// keep adding items here...

increment = Math.floor(Math.random() * number);

document.write(banner[increment]);

//--></SCRIPT>

Random Avatar:

<?php
header('Content-type: image/jpeg');

//URL of the folder where the avatar images are
//The avatar images and php file can be in different places
$url = "http://homepage.ntlworld.com/frank.cox/damon/images/avatars/";

//List of filenames you wish to randomize, currently only jpegs are supported
//Note the last filename does not need a comma after it
$avatar = array (
"phpone.jpg",
"phptwo.jpg",
"phpthree.jpg"
);

//Select a random image from the list
$size = (count($avatar) - 1);
if (!isset($id) || ($size < 0) || ($id > $size)) {
$id = rand (0, ($size - 1));
}

//Output the image
$img = imagecreatefromjpeg($url . $avatar[$id]);
imagejpeg($img);
imagedestroy($img);
?> 

For that, you might want to try Tim Dorr: http://home.timdorr.com/scripts/sig/

If you get the script for that - see if you can post it here?

Hope they help,

Pete

  • 0

It's pretty easy :-

1. Make a page with a form, a textbox and a button on. Make this script submit to something like action.php

2. In action.php make it check to see if something was entered (also badwords, if you feel so inclined). If everything checks out allright then write the text to a .txt file.

3. In your image script use file_get_contents to get the data from inside the textfile and load it to a variable. Write this variable to the image using imagettftext or whatever you're using.

Done !

  • 0

Alright, I'll take a couple mins to fire this one out!

1. We'll be using two files for this. form.html and genimg.php (generate image).

form.html will simply have the form that a user can fill out to have the image display.

genimg.php will then take that information and using it to build the image you want!

Here's the form you can put on your site:

<form action="genimg.php" method="post" name="genimg">
<input type="text" name="text"><br>
<input type="submit" value="Make Image!">
</form>

And here's GenImg.php

<?php

if(isset($_POST['text'])) {
	//generate image
	header("Content-type: image/png");

	$image = imagecreatefrompng("image.png");

	//Colour Black
	$clr_black = imagecolorallocate($image, 0, 0, 0);

	//Add the text! REMEMBER TO ADJUST the number 90 at the end of this line for the length of your image.
	//Simply keep changing it till it works well for your site. (It makes the text not spill off the image).
	ImageTTFText($image, 9, 0, 5, 14, $clr_black, "arial.TTF", wordwrap(stripslashes($_POST['text']), 90));

	imagepng($image);
	imagedestroy($image);
} else {
	?>
	Sorry, you forgot to fill out the form!<br>
	<form action="genimg.php" method="post" name="genimg">
	<input type="text" name="text"><br>
	<input type="submit" value="Make Image!">
	</form>
	<?php

}
?>

This is a VERY basic code. I thought making it complicated would just confuse you :p.

You'll also need to put arial.TTF in the same directory as this file (You can find this file in: C:\Windows\Fonts\) and you'll also need an existing image named image.png.

The command:

ImageTTFText($image, 9, 0, 5, 14, $clr_black, "arial.TTF", wordwrap(stripslashes($_POST['text']), 90));

Has to be modified to make the text fit where you want it on your image. you can do this by adjusting the numbers 5 and 14. 5 sets the VERTICAL adjustment (up and down) and 14 adjusts the HORIZONTAL adjustment (LEFT and RIGHT). the number 9 is the font size, and the 0 is the angle.

I'd be glad to answer any questions.

EDIT**

Crud, I just relized you are wanting something a little different... You want people on your site to be able to Adjust YOUR signature image. Never mind this script then, it's not what you're looking for...

-Ax

  • 0

Ok, sorry totally forgot about this thread :rolleyes: ..

This is all in one block, this is the really old one..

<?php

/* Kings mooodi's PHP-GD powered Signature for use on forums
Orginaly made for my personal use on http://forums.ithium.net
Hope you enjoy : simple config bellow easy, simple, clear and commented.
note: thread name is currently supported by IPB only.

Now heres the crappy part:
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA


*/

$commentfile = "comments.dat"; //Must be Chmod'd 777
$thisfile = "neowin.jpg"; //this file

//End of Config

if($go == "") {

header ("Content-type: image/png");


// Various Color and image creation Stuff
$im = imagecreate(400, 130);    	// Create Image
$white = imagecolorallocate ($im, 255, 255, 255); // Colours 
$black = imagecolorallocate ($im, 0, 0, 0);
$grey = imagecolorallocate ($im, 226, 215, 215);
imagerectangle ($im, 1, 1, 399, 129, $black);  // Border

//Find and read the comment
$commentopen = fopen($commentfile, "r"); //Open file
$comments = fread($commentopen, filesize($commentfile)); // Read file
$showcomments = explode(":", $comments); //separate comments
fclose($commentopen); //clost file

// Final stage, Print everything on to the image

imagettftext($im, 10, 0, 5, 25, $black, "./trebuc.ttf",  '-> IP : ' .$strIP);                    // Viewer IP
imagettftext($im, 10, 0, 5, 40, $black, "./trebuc.ttf",  '-> Date : ' .$strTIME);           // Date
imagettftext($im, 10, 0, 5, 55, $black, "./trebuc.ttf",  '-> Uptime : ' .$strUP);           // Server Uptime
imagettftext($im, 10, 0, 5, 70, $black, "./trebuc.ttf",  '-> Exec. in : ' .$strGEN);       // Generated in...     
imagettftext($im, 10, 0, 5, 85, $black, "./trebuc.ttf",  '-> Script Update: ' .$strMOD);   // Modified time
imagettftext($im, 10, 0, 20, 115, $black,"./trebuc.ttf",  '' .$showcomments[0]);           // Quote

imagettftext($im, 25, 0, 287, 32, $black, "./bord.ttf",  "mooodi");    // Name
imagestring ($im, 1, 375, 120,  ''.$strVER, $black);                       // Print Script Version


imagepng ($im);
imagedestroy ($im);


}elseif($go == "change") {
//Add comments..//
echo "<body><center>";
echo "<h1>Change Comment</h1>";
echo "<form action=$thisfile><input type=hidden name=go value=gochange>";
echo "New message: <input type=text name=newcomment maxlength=150><br>";
echo "<input type=submit value=\"Update commentwall\">";
echo "<br><br><a href=?go=list>Show Archives</a>";
echo "</center></form></html>";
} elseif($go == "list") {
if(!$commentflag) { $commentflag = "a"; }
// You can edit the archives page here. //
echo "<body><center>";
echo "<table width=70%>";
$commentopen = fopen($commentfile, "r");
$comments = fread($commentopen, filesize($commentfile));
$showcomments = explode(":", $comments);
foreach($showcomments as $s) {
	if($commentflag == "a") {
  echo "<tr><td bgcolor=#F1F3E5>";
  echo "$s<br>";
  echo "</td></tr>";
  $commentflag = "b";
	} elseif($commentflag == "b") {
  echo "<tr><td bgcolor=lightgrey>";
  echo "$s<br>";
  echo "</td></tr>";
  $commentflag = "a";
}
}
fclose($commentopen);
echo "</table></body></html>";
} elseif($go == "gochange") {
if(!$newcomment) {
echo "no comment";
die();
} else {
$newcomment = str_replace("<", "[html] ", $newcomment);
$newcomment = str_replace(">", " [!html]", $newcomment);
$newcomment = str_replace(":", " - ", $newcomment);

$newcommentz = stripslashes("$newcomment");
$commentopen = fopen($commentfile, "r");
$rottencomments = fread($commentopen, filesize($commentfile));
fclose($commentopen);
$commentwrite = fopen($commentfile, "w+");
	if(!fwrite($commentwrite, "$newcommentz:$rottencomments"))
	{ echo "File Write error"; }	
	fclose($commentwrite);
	echo "Comment added, done.";
}
} else {
echo "crap! invalid page...";
die();
}

?>

Notes:

Don't just copy paste the whole thing because its more than likely that you don't have fonts named trhe way I named them.

Make sure you have comments.dat (or whatever you specified your comments file to be) chomd'd to 777.

This is quite old so it is'nt the neatest work ever, and the pages are NOT what my usual stuff looks like.

The code above isn't the whole thing I cut out as much as possible (whilst keeping it error free) so that the comment thing is as clear as possible.

Pages :

filename.ext?go=list : will show all the comments.

filename.ext?go=change : will bring up the add comment change.

Preview :

This is what the above code should output.

neowin.jpg

Test: Add Comment and Archives.

Hope this is what you wanted ;) and umm sorry for the delay.. :rofl: ,

mooodi

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • Can you still click his nose in the about box?
    • In that case this product has no value to me. I'd rather use older Creative SB that were better in my opinion or onboard audio chip.
    • FxSound 1.2.9.0 / 1.2.10.0 Beta by Razvan Serea FxSound (formerly DFX Audio Enhancer / FxSound Enhancer) is now free, making high-quality audio enhancement accessible to everyone. Designed for all PC sound systems, from average setups to audiophile-grade equipment, it offers automatic or fully customizable processing. As automatic or customizable as you want, it utilizes the highest-grade processing to deliver more volume, better equalization, and a wider, deeper sound. For the serious audiophiles, FxSound gives you the tools to adjust the FxSound Effects and EQ to your exact preferences. Turn FxSound on and immediately hear the difference in sound quality. FxSound is ideal for budget audiophiles, music lovers, gamers, transcriptionists, Netflix enthusiasts, and more. It’s particularly beneficial for those relying on quiet laptop speakers or low-quality audio hardware. As a free tool, FxSound excels in boosting volume, enhancing bass, and improving sound quality. No other free EQ for Windows matches its ease of use. FxSound Is Now Completely Free and Unrestricted FxSound Pro is now free for everyone, not just those who can afford it. Get free and unrestricted access to better sound today. FxSound is now entirely supported by users. Click here to donate to help fund continued development and improvements to FxSound. FxSound 1.2.9.0 changelog: Auto save preset when Equalizer or Effects settings are changed Reset to factory defaults can reset the unsaved preset changes Settings dialog UI improvements for Audio and Equalizer sections Output device list is now displayed in the device preference order Preset is selected immediately when the preset for an active output device changes from settings Fixes and improvements in preferred output device selection Fixed crash issue #487 Fixed preset not getting applied and EQ flat after update (#403 and #472) Fixed system audio device not being restored on reboot (#483) Fixed preset export and import dialogs not shown when always on top is enabled Fixed audio not being restored on exit after the preset save dialog Fixed FxSound on/off handling on Windows session changes FxSound 1.2.10.0 Beta changelog: Command line options can now be applied to an already running instance of FxSound Command line option added to launch FxSound minimized to the system tray Fixed output device not being changed through hotkeys when FxSound is off (#524) Individual hotkeys can now be disabled with Delete key (#515) Fixed the but to prevent invalid hotkeys from being registered (#523) Bluetooth devices removed from device settings are removed from device preference list Fixed device detection failures Fixed application hang when retrieving the audio mix format fails Fixed presets import dialog file name combo box text alignment Fixed output device not being applied through command line Fixed a delay blocking application load when minimizing to the system tray Fixed EQ band sliders not refreshing when switching number of bands (#521) Fixed user-set mute being overridden by FxSound Fixed icon visibility in ARM64 version Finnish language support added Corrected Persian translations Download: FxSound 1.2.9.0 | ARM64 | ~70.0 MB (Open Source) Download: FxSound 1.2.10.0 Beta | ARM64 View: FxSound Home Page | Screenshot Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • mIRC 7.84 Final by Razvan Serea mIRC is a full featured Internet Relay Chat client for Windows that can be used to communicate, share, play or work with others on IRC networks around the world, either in multi-user group conferences or in one-to-one private discussions. It has a clean, practical interface that is highly configurable and supports features such as buddy lists, file transfers, multi-server connections, SSL encryption, proxy support, UTF-8 display, customizable sounds, spoken messages, tray notifications, message logging, and more. mIRC also has a powerful scripting language that can be used both to automate mIRC and to create applications that perform a wide range of functions from network communications to playing games. mIRC has been in development for over a decade and is constantly being improved and updated with new technologies. mIRC 7.84 changelog: Added custom dialog editbox option 'optional' for grayed out optional text. Fixed DirectShow temporary wave file not being deleted on exit. Changed $urlget() to retry a connection without compression in the event of an error. Updated code signing certificate to use Azure Artifact Signing. Fixed menubar display bug when in dark mode. Fixed /server -a not preserving existing entry's codepage. Fixed Address Book nick colors "idle time" display bug. Changed installer to no longer require administrator access on startup. Added support for displaying an MDI window's System menu when right-clicking its titlebar. Updated libararies to OpenSSL v3.5.7, TagLib v2.2.1, Zlib v1.3.2, and ADA v0.5.5. Updated CA root certificates cacert.pem file. For a full list of recent changes, please see the versions.txt file. Download: mIRC 7.84 | 4.3 MB (Shareware) View: mIRC Home Page | Screenshot Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • You might be right... Look at his name, hiding in plain sight: hAmId.
  • Recent Achievements

    • One Month Later
      timbobit earned a badge
      One Month Later
    • One Month Later
      nates earned a badge
      One Month Later
    • Week One Done
      Almohandis earned a badge
      Week One Done
    • Rookie
      dorf went up a rank
      Rookie
    • First Post
      mike_rumble earned a badge
      First Post
  • Popular Contributors

    1. 1
      +primortal
      468
    2. 2
      +Edouard
      165
    3. 3
      PsYcHoKiLLa
      106
    4. 4
      Michael Scrip
      87
    5. 5
      Steven P.
      69
  • Tell a friend

    Love Neowin? Tell a friend!