BigToach.com

PHP Snippets

« 1 2 3 4 5 » ... 10

image_constraints

Information

(PHP Version >= 4.0.6)
Functions used in this snippet: imagesx, imagesy, imagecreatetruecolor, imagecopyresized.

Description

int image_constraints( int img, int dimx, int dimy )

Creates a resized image with the maximum width being dimx and height dimy without distorting the image.

Snippet

<?php
function image_constraints($img$dimx$dimy){
    
$x imagesx($img);
    
$y imagesy($img);
    
$xorg $x;
    
$yorg $y;
    
$altered false;
    if(
$x $dimx){
        
$ratio = ($dimx $x);
        
$x $ratio $x;
        
$y $ratio $y;
        
$altered true;
    }
    if(
$y $dimy){
        
$ratio = ($dimy $y);
        
$y $ratio $y;
        
$x $ratio $x;
        
$altered true;
    }
    if(!
$altered){
        return 
$img;
    }
    
$dest imagecreatetruecolor($x$y);
    
imagecopyresized($dest$img0000$x$y$xorg$yorg);
    return 
$dest;
}
?>

Example

image_constraints Can be used in the following way:

<?php
$img 
imagecreatefromjpeg('someimage.jpg'); // img size is 250 by 300 we will say
$img image_constraints($img100100);
imagejpeg($img); // output image is 83 by 100
?>

Added on Oct 9th at 7 pm by Scott - 4 Comments
Updated on May 14th at 3 pm.


link_track

Information

(PHP Version >= 4.3.0)
Functions used in this snippet: file_exists, is_readable, is_writable, unserialize, file_get_contents, is_array, array_key_exists, isset, fopen, fwrite, serialize, fclose.

Description

mixed link_track( [ int id]] )

Keeps track of the number of times that clients have clicked a link. To find the number of clicks that a link has, leave id blank. To update a certain link, set id to the id of the link that you want to update.

Snippet

<?php
function link_track($id=NULL){
    
$file 'somefile.txt'// this is the file stuff is stored in
// make sure php can read and write to this file
    
if(!file_exists($file) || !is_readable($file) || !is_writable($file)){
        return;
    }
    
$links = array(0=>'http://www.bigtoach.com'1=>'http://www.neverside.com'2=>'http://www.google.com'); // change these to your links
    
$array unserialize(file_get_contents($file));
    
$array is_array($array) ? $array : array();
    if(
$id !== NULL){
        if(!
array_key_exists($id$links)){
            return 
'sorry there is no link to the id ' $id;
        }
        
$array[$id] = isset($array[$id]) ? $array[$id] + 1;
        
$fp fopen($file'w');
        
fwrite($fp,  serialize($array));
        
fclose($fp);
        return 
$links[$id];
    }
    
$ret = array();
    foreach(
$links as $key=>$value){
        
$ret[$key]['site'] = $value;
        
$ret[$key]['clicks'] = isset($array[$key]) ? $array[$key] : 0;
        
$ret[$key]['id'] = $key;
    }
    return 
$ret;
}
?>

Example

link_track Can be used in the following way:

<?php
// this snippet is to find # of clicks
$array link_track(); // gets the array

foreach($array as $key=>$value){
    echo 
'<a href="pass.php?id=' $value['id'] . '">' $value['site'] . ' (' $value['clicks'] . ' Clicks)</a><br />';
}
// you can also get click counts like this

echo '<a href="pass.php?id=0">http://www.bigtoach.com (' $array[0]['clicks'] . ' Clicks)</a>';

// pass.php would look as the following
$_GET['id'] = isset($_GET['id']) ? intval($_GET['id']) : NULL;
$redirect link_track($_GET['id']);
if(
strstr($redirect'http')){
    
header('Location: ' $redirect);
}else{
    echo 
'Sorry that link does not exist';
}
?>

Added on Aug 18th at 6 pm by Scott - 0 Comments
Updated on Aug 18th at 6 pm.


moon

Information

(PHP Version >= 3)
Functions used in this snippet: substr, abs.

Description

array moon([int now])

moon returns an array with information about the moon's phase. If the optional now variable is set, the information returned will be for the time that is given as the arguement.

The array that is returned has the following information.

num = The current lunar rotation (not used often)
phase = The phase the moon is currently moving towards(full, last, new, first)
current = The current sub phase (Waxing Gibbous, Waning Gibbous, Waning Crescent, Waxing Crescent)
next = Same as phase just formatted better (Full Moon, Last Quarter, New Moon, First Quarter)
pct = Percent of the visible moon that is illuminated (1.0 at full moon, 0.0 at new moon)
percent Percent of the illuminated moon visible (0.5 at full moon, 0.0 at new moon)
changes = The time that the moon changes from one phase to another (new moon to first quarter) this is a unixtimestamp in universal time


Note: This function only catalogs the moons phases until 2010

Snippet

<?php
function moon($now=NULL){
    if(
$now === NULL){
        
$now time();
    }
    
$phases = array(
        
'1015new'     => 1105387380,
        
'1015first'     => 1105973880,
        
'1015full'     => 1106677980,
        
'1015last'     => 1107358020,
        
'1016new'     => 1107930540,
        
'1016first'     => 1108541760,
        
'1016full'     => 1109249640,
        
'1016last'     => 1109900220,
        
'1017new'     => 1110474660,
        
'1017first'     => 1111116000,
        
'1017full'     => 1111813140,
        
'1017last'     => 1112431860,
        
'1018new'     => 1113017580,
        
'1018first'     => 1113687480,
        
'1018full'     => 1114362420,
        
'1018last'     => 1114953900,
        
'1019new'     => 1115567160,
        
'1019first'     => 1116259020,
        
'1019full'     => 1116904740,
        
'1019last'     => 1117478880,
        
'1020new'     => 1118120160,
        
'1020first'     => 1118823780,
        
'1020full'     => 1119438840,
        
'1020last'     => 1120008240,
        
'1021new'     => 1120676580,
        
'1021first'     => 1121379600,
        
'1021full'     => 1121968860,
        
'1021last'     => 1122546000,
        
'1022new'     => 1123236300,
        
'1022first'     => 1123925940,
        
'1022full'     => 1124499180,
        
'1022last'     => 1125094740,
        
'1023new'     => 1125798360,
        
'1023first'     => 1126463820,
        
'1023full'     => 1127034060,
        
'1023last'     => 1127655660,
        
'1024new'     => 1128360480,
        
'1024first'     => 1128996060,
        
'1024full'     => 1129576440,
        
'1024last'     => 1130228220,
        
'1025new'     => 1130923500,
        
'1025first'     => 1131530280,
        
'1025full'     => 1132131480,
        
'1025last'     => 1132812720,
        
'1026new'     => 1133478060,
        
'1026first'     => 1134063420,
        
'1026full'     => 1134692160,
        
'1026last'     => 1135395420,
        
'1027new'     => 1136027520,
        
'1027first'     => 1136602620,
        
'1027full'     => 1137260940,
        
'1027last'     => 1137971640,
        
'1028new'     => 1138572900,
        
'1028first'     => 1139149740,
        
'1028full'     => 1139834700,
        
'1028last'     => 1140535020,
        
'1029new'     => 1141115460,
        
'1029first'     => 1141704960,
        
'1029full'     => 1142408160,
        
'1029last'     => 1143083460,
        
'1030new'     => 1143656160,
        
'1030first'     => 1144263660,
        
'1030full'     => 1144971660,
        
'1030last'     => 1145615340,
        
'1031new'     => 1146192240,
        
'1031first'     => 1146831240,
        
'1031full'     => 1147528320,
        
'1031last'     => 1148142060,
        
'1032new'     => 1148732760,
        
'1032first'     => 1149401160,
        
'1032full'     => 1150074240,
        
'1032last'     => 1150664940,
        
'1033new'     => 1151276760,
        
'1033first'     => 1151969820,
        
'1033full'     => 1152612120,
        
'1033last'     => 1153188780,
        
'1034new'     => 1153827120,
        
'1034first'     => 1154533560,
        
'1034full'     => 1155146040,
        
'1034last'     => 1155718320,
        
'1035new'     => 1156385400,
        
'1035first'     => 1157090220,
        
'1035full'     => 1157679780,
        
'1035last'     => 1158257760,
        
'1036new'     => 1158950760,
        
'1036first'     => 1159639440,
        
'1036full'     => 1160215980,
        
'1036last'     => 1160810760,
        
'1037new'     => 1161519300,
        
'1037first'     => 1162185960,
        
'1037full'     => 1162760340,
        
'1037last'     => 1163382360,
        
'1038new'     => 1164089940,
        
'1038first'     => 1164724200,
        
'1038full'     => 1165307100,
        
'1038last'     => 1165962720,
        
'1039new'     => 1166652060,
        
'1039first'     => 1167259680,
        
'1039full'     => 1167861480,
        
'1039last'     => 1168548300,
        
'1040new'     => 1169208060,
        
'1040first'     => 1169794920,
        
'1040full'     => 1170423960,
        
'1040last'     => 1171129920,
        
'1041new'     => 1171757700,
        
'1041first'     => 1172332620,
        
'1041full'     => 1172992680,
        
'1041last'     => 1173700500,
        
'1042new'     => 1174300980,
        
'1042first'     => 1174875420,
        
'1042full'     => 1175559360,
        
'1042last'     => 1176253500,
        
'1043new'     => 1176835020,
        
'1043first'     => 1177421760,
        
'1043full'     => 1178125800,
        
'1043last'     => 1178796480,
        
'1044new'     => 1179368880,
        
'1044first'     => 1179979380,
        
'1044full'     => 1180685040,
        
'1044last'     => 1181328180,
        
'1045new'     => 1181902440,
        
'1045first'     => 1182543360,
        
'1045full'     => 1183236540,
        
'1045last'     => 1183852440,
        
'1046new'     => 1184439840,
        
'1046first'     => 1185111000,
        
'1046full'     => 1185781680,
        
'1046last'     => 1186374000,
        
'1047new'     => 1186984980,
        
'1047first'     => 1187679300,
        
'1047full'     => 1188322560,
        
'1047last'     => 1188898380,
        
'1048new'     => 1189539900,
        
'1048first'     => 1190245680,
        
'1048full'     => 1190861160,
        
'1048last'     => 1191431220,
        
'1049new'     => 1192104060,
        
'1049first'     => 1192808040,
        
'1049full'     => 1193399520,
        
'1049last'     => 1193980740,
        
'1050new'     => 1194678240,
        
'1050first'     => 1195367580,
        
'1050full'     => 1195943400,
        
'1050last'     => 1196541900,
        
'1051new'     => 1197250860,
        
'1051first'     => 1197915480,
        
'1051full'     => 1198487760,
        
'1051last'     => 1199116260,
        
'1052new'     => 1199821080,
        
'1052first'     => 1200455160,
        
'1052full'     => 1201037700,
        
'1052last'     => 1201698180,
        
'1053new'     => 1202384700,
        
'1053first'     => 1202988840,
        
'1053full'     => 1203593460,
        
'1053last'     => 1204280340,
        
'1054new'     => 1204938900,
        
'1054first'     => 1205520360,
        
'1054full'     => 1206153660,
        
'1054last'     => 1206856080,
        
'1055new'     => 1207479360,
        
'1055first'     => 1208050380,
        
'1055full'     => 1208712360,
        
'1055last'     => 1209417180,
        
'1056new'     => 1210015140,
        
'1056first'     => 1210589280,
        
'1056full'     => 1211274720,
        
'1056last'     => 1211968620,
        
'1057new'     => 1212546180,
        
'1057first'     => 1213135440,
        
'1057full'     => 1213835460,
        
'1057last'     => 1214507400,
        
'1058new'     => 1215076740,
        
'1058first'     => 1215689700,
        
'1058full'     => 1216393200,
        
'1058last'     => 1217036520,
        
'1059new'     => 1217610780,
        
'1059first'     => 1218252060,
        
'1059full'     => 1218946620,
        
'1059last'     => 1219560600,
        
'1060new'     => 1220151540,
        
'1060first'     => 1220821500,
        
'1060full'     => 1221495240,
        
'1060last'     => 1222085100,
        
'1061new'     => 1222701180,
        
'1061first'     => 1223395500,
        
'1061full'     => 1224039780,
        
'1061last'     => 1224615300,
        
'1062new'     => 1225264500,
        
'1062first'     => 1225973040,
        
'1062full'     => 1226585880,
        
'1062last'     => 1227159120,
        
'1063new'     => 1227833700,
        
'1063first'     => 1228541160,
        
'1063full'     => 1229128680,
        
'1063last'     => 1229711400,
        
'1064new'     => 1230409380,
        
'1064first'     => 1231099020,
        
'1064full'     => 1231673220,
        
'1064last'     => 1232275560,
        
'1065new'     => 1232985360,
        
'1065first'     => 1233645240,
        
'1065full'     => 1234219800,
        
'1065last'     => 1234849080,
        
'1066new'     => 1235554560,
        
'1066first'     => 1236181560,
        
'1066full'     => 1236767880,
        
'1066last'     => 1237427280,
        
'1067new'     => 1238112420,
        
'1067first'     => 1238711640,
        
'1067full'     => 1239314160,
        
'1067last'     => 1240000620,
        
'1068new'     => 1240654980,
        
'1068first'     => 1241235900,
        
'1068full'     => 1241866920,
        
'1068last'     => 1242570420,
        
'1069new'     => 1243192320,
        
'1069first'     => 1243765380,
        
'1069full'     => 1244423520,
        
'1069last'     => 1245129300,
        
'1070new'     => 1245724560,
        
'1070first'     => 1246300140,
        
'1070full'     => 1246983720,
        
'1070last'     => 1247676840,
        
'1071new'     => 1248255300,
        
'1071first'     => 1248843600,
        
'1071full'     => 1249545300,
        
'1071last'     => 1250214960,
        
'1072new'     => 1250787720,
        
'1072first'     => 1251398520,
        
'1072full'     => 1252105380,
        
'1072last'     => 1252746960,
        
'1073new'     => 1253324700,
        
'1073first'     => 1253965800,
        
'1073full'     => 1254661860,
        
'1073last'     => 1255276560,
        
'1074new'     => 1255869240,
        
'1074first'     => 1256546580,
        
'1074full'     => 1257218040,
        
'1074last'     => 1257810960,
        
'1075new'     => 1258427640,
        
'1075first'     => 1259127600,
        
'1075full'     => 1259767860,
        
'1075last'     => 1260346440,
        
'1076new'     => 1260993780,
        
'1076first'     => 1261705020,
        
'1076full'     => 1262315580,
        
'1076last'     => 1262889600,
        
'1077new'     => 1263568320,
        
'1077first'     => 1264272840,
        
'1077full'     => 1264861080,
        
'1077last'     => 1265442540,
        
'1078new'     => 1266144720,
        
'1078first'     => 1266828180,
        
'1078full'     => 1267403880,
        
'1078last'     => 1268005380,
        
'1079new'     => 1268715720,
        
'1079first'     => 1269370860,
        
'1079full'     => 1269944760,
        
'1079last'     => 1270571880,
        
'1080new'     => 1271273400,
        
'1080first'     => 1271899200,
        
'1080full'     => 1272482340,
        
'1080last'     => 1273144500,
        
'1081new'     => 1273824300,
        
'1081first'     => 1274424180,
        
'1081full'     => 1275026880,
        
'1081last'     => 1275714840,
        
'1082new'     => 1276366500,
        
'1082first'     => 1276947000,
        
'1082full'     => 1277577060,
        
'1082last'     => 1278279360,
        
'1083new'     => 1278902460,
        
'1083first'     => 1279473060,
        
'1083full'     => 1280133420,
        
'1083last'     => 1280836740,
        
'1084new'     => 1281434940,
        
'1084first'     => 1282007700,
        
'1084full'     => 1282694700,
        
'1084last'     => 1283386920,
        
'1085new'     => 1283967000,
        
'1085first'     => 1284555000,
        
'1085full'     => 1285258680,
        
'1085last'     => 1285930380,
        
'1086new'     => 1286502300,
        
'1086first'     => 1287116880,
        
'1086full'     => 1287823020,
        
'1086last'     => 1288467960,
        
'1087new'     => 1289047920,
        
'1087first'     => 1289695140,
        
'1087full'     => 1290389280,
        
'1087last'     => 1291005420,
        
'1088new'     => 1291599360,
        
'1088first'     => 1292277540,
        
'1088full'     => 1292948040,
        
'1088last'     => 1293538740);
    foreach(
$phases as $phase=>$time){
        if(
$now $time){
            break;
        }
    }
    
//$num   = substr($phase, 0, 4);
    //$phase = substr($phase, 4);
    
$data = array();
    
$moon['num']   = substr($phase04);
    
$moon['phase'] = substr($phase4);
    switch(
$moon['phase']){
        case 
'new':
            
$moon['current'] = 'Waning Crescent';
            
$moon['next'] = 'New Moon';
            
$moon['pct']  = abs(- (($now $phases[($moon['num'] - 1) . 'last']) / ($time $phases[($moon['num'] - 1) . 'last']))) * .5;
        break;
        case 
'first':
            
$moon['current'] = 'Waxing Crescent';
            
$moon['next'] = 'First Quarter';
            
$moon['pct']  = ($now $phases[$moon['num'] . 'new']) / ($time $phases[$moon['num'] . 'new']) * .5;
        break;
        case 
'full':
            
$moon['current'] = 'Waxing Gibbous';
            
$moon['next'] = 'Full Moon';
            
$moon['pct']  = ((($now $phases[$moon['num'] . 'first']) / ($time $phases[$moon['num'] . 'first'])) * .5) + .5;
        break;
        case 
'last':
            
$moon['current'] = 'Waning Gibbous';
            
$moon['next'] = 'Last Quarter';
            
$moon['pct'] = (abs(- (($now $phases[$moon['num'] . 'full']) / ($time $phases[$moon['num'] . 'full']))) * .5) + .5;
        break;
    }
    
$moon['percent'] = $moon['pct'] / 2;
    
$moon['changes'] = $time;
    return 
$moon;
}
?>

Example

moon Can be used in the following way:

<?php
$moon 
moon();
echo 
'You can currently see ' ceil($moon['percent'] * 100) . '% of the moon. It is currently a ' $moon['current'] . ' and is moving towards a ' $moon['next'] . ' and will get there on ' date('r'$moon['time']);
// would say something like
// You can currently see 10% of the moon. It is 
//currently a Waxing Crescent and is moving towards 
//a First Quarter and will get there on (some date).


$moon moon(strtotime('November 5 2006'));
// returns the moons info for november 5 2006 00:00
?>

Added on Aug 14th at 7 am by Scott - 0 Comments


random_pass

Information

(PHP Version >= 3.0.6)
Functions used in this snippet: strlen, mt_rand.

Description

str random_pass( [int length, [str chars]] )

Creates a random password length characters long with the specific characters of chars.

Snippet

<?php
function random_pass($length=7,$chars=NULL){
    if(
$chars === NULL){
        
$chars  '0123456789';
        
$chars .= 'abcdefghijklmnopqrstuvwxyz';
        
$chars .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    }
    
$charlen strlen($chars) - 1;
    
$ret '';
    for(
$i=0$i<$length$i++){
        
$ret .= $chars{mt_rand(0,$charlen)};
    }
    return 
$ret;
}
?>

Example

random_pass Can be used in the following way:

<?php
echo random_pass(); // 7 character random pass

echo random_pass(10); // 10 character random pass

echo random_pass(6,'abcdefghijklmnopqrstuvwxyz');
// 6 character random pass with only lowercase a-z characters
?>

Added on Aug 12th at 5 am by Scott - 0 Comments


print_array

Information

(PHP Version >= 4.0.1)
Functions used in this snippet: str_pad, array_keys, is_array, gettype.

Description

void print_array( array array, void level )

Prints the values and types of an array similarly to print_r but includes the values types and the arrays are colored as well according to the array colors.

Note: You don't need to do anything with the level variable.

Snippet

<?php
function print_array($array$level=0){
    
$num $level === 4;
    
$colors = array(    'bracket'=>'#999999',
                        
'value'=>'#FF0000',
                        
'array'=>'#009900',
                        
'arrow'=>'#999999',
                        
'type'=>'#0000FF',
                        
'key'=>'#000000');
    echo 
'<span style="color: ' $colors['array'] . ';">';
    echo 
"Array\n" str_pad('', ($level 4) + ($level $num), " ") . "(\n";
    
$keys array_keys($array);
    foreach(
$keys as $key){
        echo 
str_pad('', ($level 4) + ($level $num), " ");
        echo 
'    <span style="color: ' $colors['bracket'] . ';">';
        echo 
'[<span style="color: ' $colors['key'] . ';">' $key '</span>]';
        echo 
'</span> <span style="color: ' $colors['arrow'] . ';">=></span> ';
        if (
is_array($array[$key])){
            
print_array($array[$key], $level 1);
        }else{
            echo 
' <span style="color: ' $colors['value'] . ';">' $array[$key] . '</span>';
            echo 
' <span style="color: ' $colors['type'] . ';">' gettype($array[$key]) . "</span>\n";
        }
    }
    echo 
str_pad('', ($level 4) + ($level $num), " ") . ")</span>\n";
}
?>

Example

print_array Can be used in the following way:

<?php
echo '<pre>'// format to show whitespace
$array = array(1,1,1,2);
print_array($array); // prints out array, each with int as type

$another_array = array('wee''haha', array(1,2,3), array(array(null), array(true)));
print_array($another_array);
// prints out that array above.
?>

Added on Aug 12th at 2 am by Scott - 0 Comments


« 1 2 3 4 5 » ... 10