PHP - New To Php, Help/advice On Turning Data Into An Image
Hi, I'm pretty new to PHP, struggled my way through most of my encounters with PHP so far, but getting the hang of it
I'm looking for a simple script that turns a number or word served by a weather station into a graphic. E.g. If the temp is 20 degrees, a graphic I've designed would be shown, or a cloud or the sun or whatever. At the moment the weather station feed is converted from 'webtags' in to php tags (temp is $temp, wind is $wind etc.) and these echo out as numbers and words on the website. I can sort of see how it would work in my head, but need a little help. Can anyone please point me in the right direction? Thanks (for reference site is www.southtyneweather.co.uk) Similar TutorialsI'm new to programming so take it easy on me but I wrote this script for php and it's not complete yet but I could use some advice on file upload security. Besides recreating the image, checking token/request and setting apache settings what else can I do to secure this application. Here's my code:
header('Content-Type: application/json'); $uploaded = array(); if(!empty($_FILES['file']['name'][0])) { $allowedExts = array("gif", "jpeg", "pjpeg", "x-png", "jpg", "png"); foreach ($_FILES['file']['tmp_name'] as $k => $v) { $name = $_FILES['file']['name'][$k]; $type = $_FILES['file']['type'][$k]; $error = $_FILES["file"]["error"][$k]; $size = $_FILES["file"]["size"][$k]; $tempDir = $_FILES["file"]["tmp_name"][$k]; $lowerName = strtolower($name); $temp = explode(".", $lowerName); $extension = end($temp); if ((($type == "image/gif") || ($type == "image/jpeg") || ($type == "image/jpg") || ($type == "image/pjpeg") || ($type == "image/x-png") || ($type == "image/png")) && ($size < 20000) && in_array($extension, $allowedExts)) { if ($error > 0) { echo "Return Code: " . $error . "<br>"; } else { $imageInfo = getimagesize($tempDir); if($imageInfo['mime'] != 'image/gif' && $imageInfo['mime'] != 'image/jpeg' && $imageInfo['mime'] != 'image/jpg' && $imageInfo['mime'] != 'image/pjpeg' && $imageInfo['mime'] != 'image/x-png' && $imageInfo['mime'] != 'image/png') { echo 'Sorry we only accept GIF, JPEG, JPG, PJPEG, X-PNG, PNG image files!'; }else { switch($type) { case 'image/gif': $newName = md5(uniqid()). '.' .time(). '.gif'; break; case 'image/jpeg': $newName = md5(uniqid()). '.' .time(). '.jpeg'; break; case 'image/jpg': $newName = md5(uniqid()). '.' .time(). '.jpg'; break; case 'image/pjpeg': $newName = md5(uniqid()). '.' .time(). '.pjpeg'; break; case 'image/x-png': $newName = md5(uniqid()). '.' .time(). '.x-png'; break; case 'image/png': $newName = md5(uniqid()). '.' .time(). '.png'; break; } if (file_exists('images/' .Session::get(Config::get('session/session_name')). '/' .$newName)) { echo escape($name) . " already exists. "; } else { if(move_uploaded_file($tempDir, 'images/' .Session::get(Config::get('session/session_name')). '/' .$newName)) { $uploaded[] = array( 'name' => $name, 'file' => 'images/' .Session::get(Config::get('session/session_name')). '/' .$newName ); } } } } } else { echo 'Sorry we only accept GIF, JPEG, JPG, PJPEG, X-PNG, PNG image files!'; } } }I've been researching apache Mod_mime but can't find enough info to wrap my mind around it. Edited by Millertime1, 12 August 2014 - 01:00 PM. having a problem turning this sql into a query and I need it to only update rows where id field is empty. Code: [Select] UPDATE systems SET naqahdah = naqahdah + naqahdah_mines * 2 I tried this out with failure Code: [Select] <?php mysql_query("UPDATE systems SET naqahdah= naqahdah + naqahdah_mines * 2 WHERE id <> ' ' "); ?> so i tried getting rid of WHERE and couldnt even get this to work. I tested the sql out it works fine. Code: [Select] <?php mysql_query("UPDATE systems SET naqahdah= naqahdah + naqahdah_mines * 2 "); ?> Hey i'm having trouble figuring out how to do this. This is the code grabbing the users who are online and listing them one by one. Code: [Select] $qt=mysql_query("SELECT username FROM users WHERE lastvisit > '$tm' and online='ON'"); echo mysql_error(); while($nt=mysql_fetch_array($qt)){ echo "<tr><td> $nt[username] </td></tr>"; } ?> what i want to do is have each username be a hyperlink that links to their profile how would i go about this? cause i'm completely clueless on this. is there some way i can do it in the php or will i need to make a varchar column for each player that holds their profile link and grab that with the query too? I am trying to turn a .txt file into an array, count the items in the array, and display a random quote from it.
<p class = "center"> <?php $Proverb = file('../proverbs.txt'); $ProverbCount = count($Proverb); echo rand(0, $ProverbCount-1); ?> <br> © 2014 </p>The issue I am having is that it states the file does not exist: FULL PATH: G:\EasyPHP-5.3.2i\www\PHP_Projects\ChineseZodiacs\Includes\inc_footer.php TEXT FILE: G:\EasyPHP-5.3.2i\www\PHP_Projects\ChineseZodiacs\proverbs.txt Please help, thank you. I recently had a need to check several arrays, and if an index wasn't set, set a variable to a given value. The code was such that I couldn't perform the isset check all at once. I then thought "wouldn't it be great if I could try the script, and catch the error or warning". Searching a bit, I came across the following script. I am a little nervous, however, that there might be negative consequences of doing so. Thoughts?
set_error_handler(function($errno, $errstr, $errfile, $errline, array $errcontext) { // error was suppressed with the @-operator if (0 === error_reporting()) { return false; } throw new ErrorException($errstr, 0, $errno, $errfile, $errline); }); try { dns_get_record(); } catch (ErrorException $e) { // ... } I got a tab menu, where the user choose his category and a list of sub categories appear. Personally I like the old fashion way, where everything listed like in craiglist.com ... How can I turn the following tab menu, into a simple 3 column list? <!--CATEGORIES--> <div id="selCategories"> <div class="slidetabsmenu menu_fix"> <ul> <?php if(isset($groups) and $groups->num_rows()>0) { $i=0; foreach($groups->result() as $group) { ?> <li id="gr<?php echo $i;?>" class="<?php if($i == '0') echo "selected"; ?>"><a href="javascript:;" onclick="getCat('<?php echo $i ?>','<?php echo $groups->num_rows ?>',<?php echo $group->id;?>);"><span><?php echo $group->group_name;?></span></a></li> <?php $i++;} } ?> </ul> </div> <div class="clsInfoBox"> <div class="block"> <div class="grey_t"> <div class="grey_r"> <div class="grey_b"> <div class="grey_l"> <div class="grey_tl"> <div class="grey_tr"> <div class="grey_bl"> <div class="grey_br"> <div class="cls100_p"> <h4><span class="clsCategory"><?php echo $this->lang->line('CATEGORIES');?></span></h4> <div class="clsCategoryList clearfix" id="catInner"> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> <!--END OF CATEGORIES--> Your tips, directions, and support is highly appreciated. right now i have my date system to say "X amount of seconds ago, X hours ago, X days ago, X years ago, How could i turn mktime() (1290874161) into a mm/dd/yyyy format? so it would say like, "Nov 27, 2010 at Hour:Minute" (whatever the hour/minute is) Hi guys, I have written a page that contains a form. When the user chooses a color, it is posted, then the posted value is re-written as a filename, sent through a function, and the image on the page uses the "colorized.gif" created by the function to make an image swap "onclick. Problem is, no matter the choice, it always changes the picture to orange! Here is the code for the form: <?php include('function.php'); ?> <!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"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>PHP GD CONFIGURATOR</title> </head> <body> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> Red<input type="radio" name="color" value="red" /> Orange<input type="radio" name="color" value="orange" /> Ivory<input type="radio" name="color" value="ivory" /> Black<input type="radio" name="color" value="black" /> <input type="submit" name="submit" value="submit" /> </form> <?php if($_POST['color'] != NULL){ echo $_POST['color']; $file =('gdimages/' . $_POST['color'] . '.gif'); createImg($file); } ?> <img src="default.jpg" name="lola" alt="lola dining chair" onclick="this.src = 'colorized.gif'" /> </body> </html> And here is the function... function createImg ($imgname1) { $base = imagecreatefromgif("gdimages/base.gif"); $top = imagecreatefromgif($imgname1); if ($top) { imagecopy($base, $top, 0, 0, 0, 0, 250, 250); imagejpeg($base, 'colorized.gif'); imagedestroy($base); } else{ header("Content-Type: text/html"); } } I really can't understand it...this is my first attempt at programming something new by myself...and I really need it to work!!! I also plan for this to work with combining more than 2 images from more than two choice menus...so debugging now is definitely necessary. Any suggestions? I have got a date field in my mysql database with events, and as you know date in MYSQL uses yyyy/mm/dd but I would first like to turn this around to dd/mm/yyyy but also turn this into for example "Tuesday - May 1990" would anyone like to point me into the right direction? Much appreciated! i run several wordpress on domains - and wthin the wordpress i have a plugin that allows uploads of images -within a certain plugin the interesting thing: image upload is - sometimes possible and sometinmes impossible: see here the circumstances - PHP Version : 5.3.28 PHP Safe Mode : On image upload is impossible - and on the same server - a second vhost PHP Version : 5.3.28 PHP Safe Mode : off image upload is possible why is this so - does it have to do with the safe-mode - Hi, I have an image (a weather map) which is created using php which pulls data from a mysql database. I would like to be able to output the result image as a gif or jpg file. Can anyone suggest how this could be done? Many thanks, Simon I wonder whether someone may be able to help me please. I'm trying to put together a PHP within Aurigma Image Uploader which will create an image gallery. To do this I need to extract the image from a folder called 'Thumbnails' and image data from a file called 'files.xml'. The code below is an extract of the default script that performs this functionality and I've tested and it works without any issues. Code: [Select] <?php //This variable specifies relative path to the folder, where the gallery with uploaded files is located. //Do not forget about the slash in the end of the folder name. $galleryPath = 'UploadedFiles/'; $thumbnailsPath = $galleryPath . 'Thumbnails/'; $absGalleryPath = realpath($galleryPath) . DIRECTORY_SEPARATOR; $descriptions = new DOMDocument('1.0'); $descriptions->load($absGalleryPath . 'files.xml'); ?> I have now changed my folder and file structure to the following: UploadedFiles (Folder) username (Subfolder containing the 'location' folder) location (Subfolder containing 'Thumbnails folder and image, and 'files.xml') Please note that both the 'username' and 'location' folders are dynamically created when the user initially uploads the images. To try and accomodate the new file structure I changed my code to: Code: [Select] <?php //This variable specifies relative path to the folder, where the gallery with uploaded files is located. //Do not forget about the slash in the end of the folder name. $galleryPath = 'UploadedFiles/'; $absGalleryPath = realpath($galleryPath) . DIRECTORY_SEPARATOR . $usernamefolder . DIRECTORY_SEPARATOR . $locationfolder . DIRECTORY_SEPARATOR; $thumbnailsPath = $galleryPath . 'Thumbnails/'; $descriptions = new DOMDocument('1.0'); $descriptions->load($absGalleryPath . 'files.xml'); ?> But when I run this I receive the following error: Quote d333603417/htdocs/development/UploadedFiles/files.xml" in /homepages/2/d333603417/htdocs/development/gallery.php on line 14 Line 14 is this line: Code: [Select] $descriptions->load($absGalleryPath . 'files.xml'); I've been working on this for days and I just can't seem to find the answer. I just wondered whether someone could possibly look at this and let me know where I'm going wrong. If it helps, I've added the upload script below. Code: [Select] <?php require_once 'Includes/gallery_helper.php'; require_once 'ImageUploaderPHP/UploadHandler.class.php'; $galleryPath = 'UploadedFiles/'; function onFileUploaded($uploadedFile) { global $galleryPath; $packageFields = $uploadedFile->getPackage()->getPackageFields(); $username=$packageFields["username"]; $locationid=$packageFields["locationid"]; $username = preg_replace('/[^a-z0-9_\-\.()\[\]{}]/i', '_', $_POST['username']); $location = preg_replace('/[^a-z0-9_\-\.()\[\]{}]/i', '_', $_POST['locationid']); $dirName = preg_replace('/[^a-z0-9_\-\.()\[\]{}]/i', '_', $_POST['folder']); $absGalleryPath = realpath($galleryPath) . DIRECTORY_SEPARATOR . $username . DIRECTORY_SEPARATOR . $location . DIRECTORY_SEPARATOR; $absThumbnailsPath = $absGalleryPath . 'Thumbnails' . DIRECTORY_SEPARATOR; if (!is_dir($absGalleryPath)) mkdir($absGalleryPath, 0777, true); chmod($absGalleryPath, 0777); if (!is_dir($absGalleryPath . $dirName)) mkdir($absGalleryPath . $dirName, 0777, true); chmod($absGalleryPath . $dirName, 0777); if ($uploadedFile->getPackage()->getPackageIndex() == 0 && $uploadedFile->getIndex() == 0) initGallery($absGalleryPath, $absThumbnailsPath, FALSE); $originalFileName = $uploadedFile->getSourceName(); $files = $uploadedFile->getConvertedFiles(); $sourceFileName = getSafeFileName($absGalleryPath, $originalFileName); $sourceFile = $files[0]; if ($sourceFile) $sourceFile->moveTo($absGalleryPath . $sourceFileName); $thumbnailFileName = getSafeFileName($absThumbnailsPath, $originalFileName); $thumbnailFile = $files[1]; if ($thumbnailFile) $thumbnailFile->moveTo($absThumbnailsPath . $thumbnailFileName); $descriptions = new DOMDocument('1.0', 'utf-8'); $descriptions->load($absGalleryPath . 'files.xml'); $xmlFile = $descriptions->createElement('file'); // <-- please check the following line $xmlFile->setAttribute('name', $_POST['folder'] . '/' . $originalFileName); $xmlFile->setAttribute('source', $sourceFileName); $xmlFile->setAttribute('size', $uploadedFile->getSourceSize()); $xmlFile->setAttribute('originalname', $originalFileName); $xmlFile->setAttribute('thumbnail', $thumbnailFileName); $xmlFile->setAttribute('description', $uploadedFile->getDescription()); $xmlFile->setAttribute('username', $username); $xmlFile->setAttribute('locationid', $locationid); $xmlFile->setAttribute('folder', $dirName); $descriptions->documentElement->appendChild($xmlFile); $descriptions->save($absGalleryPath . 'files.xml'); } $uh = new UploadHandler(); $uh->setFileUploadedCallback('onFileUploaded'); $uh->processRequest(); ?> Many thanks Well, I had this working perfectly until they stopped using a mysql database and started using a flatfile. What it should do: Grab data from the flatfile, trim the unwanted parts and set it in an array. With the received data display as an image. I am very confused about how I would do this. My current code: signature.php: Code: [Select] <?php //GET AND TRIM $fileName="accounts.txt"; $fileHandle = fopen($fileName,"r"); $filecontents = fread($fileHandle,filesize($fileName)); $exploded = explode(" ",$filecontents); $name=""; $balance=""; $accounts=array(); $num=0; for($i=0;$i<count($exploded);$i++) { $line = explode("\t",$exploded[$i]); for($a=0;$a<count($line);$a++) { if(trim($line[$a])=="player") { }elseif($line[$a]=="money") { }elseif($line[$a]=="type") { }elseif(trim($line[$a])=="{") { }else { $subline = explode("\r",$line[$a]); for($e=0;$e<count($subline);$e++) { if(trim($subline[$e])=="}") { } elseif(is_numeric(trim($subline[$e]))) { $balance=trim($subline[$e]); } else { $name=trim($subline[$e]); } if($name!=""&&$balance!="") { $temp=array($name=>$balance); $accounts[$num]=$temp; $num++; $name=""; $balance=""; } } } } } //Image Generation require_once('../func.inc.php'); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); $font = "minecraft.ttf"; $user=""; if(isset($_GET['u'])) { if(!empty($_GET['u'])) { $user = $_GET['u']; } } if(isset($_GET['i'])) { if(!empty($_GET['i'])) { $img = $_GET['i']; } else{$img='1';} } else{$img='1';} if(isset($_POST['u'],$_POST['i'])) { if(!empty($_POST['u'])) { $user=$_POST['u']; } if(!empty($_POST['i'])) { $img = $_POST['i']; } } if(in_array($user, $accounts)) { //Info Grabs $money = get_balance($user); //End Info Grabs } else { die("That is an invalid player."); } //Display Image $user = ucfirst($user); $image = imagecreatefrompng("images/".$img.".png"); $color = imagecolorallocate($image, 255,255,255); if ($_GET['i'] >= '8') { ImageTTFText ($image, "8", 0, 100, 13, $color, $font,"Name:"); ImageTTFText ($image, "8", 0, 138, 13, $color, $font,$user); ImageTTFText ($image, "8", 0, 240, 13, $color,$font,"Money:"); ImageTTFText ($image, "8", 0, 285, 13, $color,$font,"$".$money); } else { ImageTTFText ($image, "7", 0, 246, 10, $color, $font,"Spartan Universe"); ImageTTFText ($image, "12", 0, 130, 50, $color, $font,"Name:"); ImageTTFText ($image, "12", 0, 130, 96, $color,$font,"Money:"); ImageTTFText ($image, "12", 0, 185, 50, $color, $font,$user); ImageTTFText ($image, "12", 0, 198, 96, $color,$font,"$".$money); } //End Image Display header("Content-type: image/png"); imagepng($image); imagedestroy($image); ?> accounts.txt: Code: [Select] arkangel011 { type player money 23.47 } chemicalbacon { type player money 203.89 } func.inc.php Code: [Select] <?php function get_players() { $con = mysql_connect("host","user","pass"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("minecraft",$con); $query = "SELECT * FROM `lb-players` ORDER BY `lb-players`.`playername` ASC "; $res = mysql_query($query,$con); while($row = mysql_fetch_assoc($res)) { echo "<option value='".$row['playername']."'>".$row['playername']."</option>"; } } function is_valid_player($user) { $con = mysql_connect("host","user","pass"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("minecraft",$con); $query = "SELECT COUNT(playername) AS count FROM `lb-players` WHERE `playername` = '".$user."'"; $res = mysql_query($query,$con); $row = mysql_fetch_assoc($res); if($row['count']==1) { return true; } else { return false; } } function get_balance($name) { $con = mysql_connect("host","user","pass"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("iconomy",$con); $query = "SELECT * FROM `iconomy` WHERE `iconomy`.`username` = '".$name."'"; $res = mysql_query($query,$con); $row=mysql_fetch_array($res); //echo $row['balance']; mysql_close($con); return $row['balance']; } function update_economy() { $con = mysql_connect("host","user","pass"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("iconomy",$con); $fileName="accounts.txt"; $fileHandle = fopen($fileName,"r"); $filecontents = fread($fileHandle,filesize($fileName)); $exploded = explode(" ",$filecontents); $name=""; $balance=""; $accounts=array(); $num=0; for($i=0;$i<count($exploded);$i++) { $line = explode("\t",$exploded[$i]); for($a=0;$a<count($line);$a++) { if(trim($line[$a])=="player") { //unset($line[$a]); }elseif($line[$a]=="money") { //unset($line[$a]); } elseif($line[$a]=="type") { //unset($line[$a]); } elseif(trim($line[$a])=="{") { //unset($line[$a]); } else { //echo $line[$a]."<br>"; $subline = explode("\r",$line[$a]); for($e=0;$e<count($subline);$e++) { //echo $subline[$e]."<br>"; if(trim($subline[$e])=="}") { //unset($subline[$e]); } elseif(is_numeric(trim($subline[$e]))) { //echo $subline[$e]."<br>"; $balance=trim($subline[$e]); } else { //echo $subline[$e]."<br>"; $name=trim($subline[$e]); } if($name!=""&&$balance!="") { $temp=array($name=>$balance); $accounts[$num]=$temp; $num++; $name=""; $balance=""; } } } } } foreach($accounts as $account=>$balance) { foreach($balance as $name=>$dollar) { $query = "UPDATE `iconomy`.`iconomy` SET `balance` = '".$dollar."' WHERE `iconomy`.`username` ='".$name."'"; mysql_query($query,$con); //echo "Name: ".$name; //echo ": Balance: ".number_format($dollar,2); //echo "<br>"; } } } ?> Hey guys, The script I use to generate images, more or less, works almost flawlessly. However, I keep experiencing a problem at random in my script when it comes time to call a JPEG or PNG file from an external server. A lot of the time it will work fine, but many other times it comes back with the error: imagecreatefromjpeg() [function.imagecreatefromjpeg]: Cannot read image data Which causes the script to fail. Right now the images it say it cannot read are these: http://tiles.xbox.com/tiles/UT/EF/1mdsb2JgbA9ECgQLGwMfWSkgL2ljb24vMC84MDAwIAABAAAAAPkqMU4=.jpg http://tiles.xbox.com/tiles/Au/lM/1Wdsb2JgbA9ECgUAGwEfL1hTL2ljb24vMC84MDAwIAABAAAAAPpj6R0=.jpg http://tiles.xbox.com/tiles/6q/kv/1Gdsb2JgbA9ECgUAGwEfL1hSL2ljb24vMC84MDAwIAABAAAAAPsAqfU=.jpg http://tiles.xbox.com/tiles/tQ/UG/1Gdsb2JgbA9ECgUAGwEfV1gmL2ljb24vMC84MDAwIAABAAAAAPspBao=.jpg http://tiles.xbox.com/tiles/qp/Fx/0Wdsb2JgbA9ECgQNGwEfVitXL2ljb24vMC84MDAwIAABAAAAAP5ekbU=.jpg and as you can see, they work fine. So what's going on here? Is Microsoft somehow blocking the attempt? I can view the images fine in the browser, but sometimes it just won't work in the script. But like I said, it's not everytime. The line the errors comes up on are these: $lastxboxgames = imagecreatefromjpeg($lastxboxgames); $lastxboxgames1 = imagecreatefromjpeg($lastxboxgames1); $lastxboxgames2 = imagecreatefromjpeg($lastxboxgames2); $lastxboxgames3 = imagecreatefromjpeg($lastxboxgames3); $lastxboxgames4 = imagecreatefromjpeg($lastxboxgames4); I also have the script to echo the variables back to me when while it's running, so those urls up there came exactly from the script, so it's not that its getting the wrong URL, it just decides that the image isn't good enough. The script, generates my signature image below, and when any of the images that come from the xbox server return an error, they all do, including the avatar image in the top left which is a PNG. Any help is appreciated! I m trying to fetch a image from mysql (blob) with header..here is my coding..."<?php include("db.php"); $query=mysql_query("select * from table where id='3' "); $row=mysql_fetch_array($query); $r=$row['image']; header("content-type:image"); echo $r; ?>" i want to fetch another fields from the database....but when i try to echo another fields...the page shows error or it does not echo other fields of database....please help me...how can i resolve it...i want to fetch other fields from database,like'username'password'firstname'lastname and image...thanks in advance... I have a base64 encoded image -> http://pastebin.com/698ES5t0
Im trying to export this as a png file.
$picture = {data on paste bin}; $picture = base64_decode($picture); file_put_contents('/home/picture.png', $Picture);Now this creates a file picture.png and i can open it in Preview/Gimp etc. However, if i upload the file to my website, the image does not render in chrome/firefox, however it does render in Safarai. It seems that there is no height/width/depth data. |