Posts filed under 'PHP'
PHP Cookies: How to Set Cookies & Get Cookies
Cookies don’t have to be an essential part of a website but can provide some of the “little things” that can set your website apart from the rest. Cookies are small tidbits of information that you save on the client’s computer so that you can access them next time they visit the website. Session ID’s are also usually held in cookies.
So what are the most popular uses of cookies? They are:
- To store username/password information so that the user doesn’t have to log in every time they visit the website (”remember me” sign ins).
- To simply remember the user’s name.
- To keep track of a user’s progress during a specified process.
- To remember a user’s theme.
Add comment April 15, 2009
XPath
XPath uses path expressions to select nodes or node-sets in an XML document.
The node is selected by following a path or steps.
(more…)
Add comment December 28, 2007
AJAX/Javascript XML Processing Example/Tutorial
xml.html:
<script type="text/javascript" language="javascript">
var http_request = false;
function makeRequest(url, parameters) {
http_request = false;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) {
alert('Cannot create XMLHTTP instance');
return false;
}
http_request.onreadystatechange = alertContents;
http_request.open('GET', url + parameters, true);
http_request.send(null);
} function alertContents() {
if (http_request.readyState == 4) {
if (http_request.status == 200) {
var xmldoc = http_request.responseXML;
var root = xmldoc.getElementsByTagName('root').item(0);
for (var iNode = 0; iNode < root.childNodes.length; iNode++) {
var node = root.childNodes.item(iNode);
for (i = 0; i < node.childNodes.length; i++) {
var sibl = node.childNodes.item(i);
var len = parseInt(sibl.childNodes.length / 2);
var arr = new Array(len);
var cnt = 0;
for (x = 0; x < sibl.childNodes.length; x++) {
var sibl2 = sibl.childNodes.item(x);
var sibl3;
if (sibl2.childNodes.length > 0) {
sibl3 = sibl2.childNodes.item(0);
arr[cnt] = sibl3.data;
cnt++;
}
}
addrow("mytable", arr);
}
}
} else {
alert('There was a problem with the request.');
}
}
}
function do_xml() {
makeRequest('xml.php', '?test=2');
}
function addrow(tablename, arr) {
var tbl = document.getElementById(tablename);
var lastRow = tbl.rows.length;
var row = tbl.insertRow(lastRow);
for (r = 0; r < arr.length; r++) {
var cell = row.insertCell(r);
cell.innerHTML = arr[r];
}
}
</script>
<input type="button" name="button" value="GET XML"
onclick="javascript:do_xml();">
<br><br>
Table filled with data requested from the server:<br>
<table border="1" id="mytable">
</table>
xml.php
<?echo "<?xml version=\"1.0\" ?>";?> <root> <data> <row> <cell>Name</cell> <cell>Fruit</cell> <cell>Vegetable</cell> </row> <row> <cell>Captain</cell> <cell>Banana</cell> <cell>Zucchini</cell> </row> <row> <cell>Admiral</cell> <cell>Melon</cell> <cell>Carrot</cell> </row> <row> <cell>Midshipman</cell> <cell>Orange</cell> <cell>Potatoe</cell> </row> </data> </root>
Add comment December 28, 2007
file access
<?php
function permission($filename)
{
$perms = fileperms($filename);
if (($perms & 0xC000) == 0xC000) { $info = ’s’; }
elseif (($perms & 0xA000) == 0xA000) { $info = ‘l’; }
elseif (($perms & 0×8000) == 0×8000) { $info = ‘-’; }
elseif (($perms & 0×6000) == 0×6000) { $info = ‘b’; }
elseif (($perms & 0×4000) == 0×4000) { $info = ‘d’; }
elseif (($perms & 0×2000) == 0×2000) { $info = ‘c’; }
elseif (($perms & 0×1000) == 0×1000) { $info = ‘p’; }
else { $info = ‘u’; }
// владелец
$info .= (($perms & 0×0100) ? ‘r’ : ‘-’);
$info .= (($perms & 0×0080) ? ‘w’ : ‘-’);
$info .= (($perms & 0×0040) ? (($perms & 0×0800) ? ’s’ : ‘x’ ) : (($perms & 0×0800) ? ‘S’ : ‘-’));
// группа
$info .= (($perms & 0×0020) ? ‘r’ : ‘-’);
$info .= (($perms & 0×0010) ? ‘w’ : ‘-’);
$info .= (($perms & 0×0008) ? (($perms & 0×0400) ? ’s’ : ‘x’ ) : (($perms & 0×0400) ? ‘S’ : ‘-’));
// все
$info .= (($perms & 0×0004) ? ‘r’ : ‘-’);
$info .= (($perms & 0×0002) ? ‘w’ : ‘-’);
$info .= (($perms & 0×0001) ? (($perms & 0×0200) ? ‘t’ : ‘x’ ) : (($perms & 0×0200) ? ‘T’ : ‘-’));
return $info;
}
function dir_list($dir)
{
if ($dir[strlen($dir)-1] != ‘/’) $dir .= ‘/’;
if (!is_dir($dir)) return array();
$dir_handle = opendir($dir);
$dir_objects = array();
while ($object = readdir($dir_handle))
if (!in_array($object, array(‘.’,’..’)))
{
$filename = $dir . $object;
$file_object = array(
‘name’ => $object,
’size’ => filesize($filename),
‘perm’ => permission($filename),
‘type’ => filetype($filename),
‘time’ => date(“d F Y H:i:s”, filemtime($filename))
);
$dir_objects[] = $file_object;
}
return $dir_objects;
}
print_r(dir_list(‘../’));
?>
Add comment December 19, 2007
CAPTCHA
Instructions:
Create the following SQL table:
CREATE TABLE captcha (
confirm_id char(32) DEFAULT ” NOT NULL,
session_id char(32) DEFAULT ” NOT NULL,
code char(8) DEFAULT ” NOT NULL,
PRIMARY KEY (session_id,confirm_id)
);
Modify the settings in the script.
This script uses TTF fonts to display the code. You can upload your own fonts to use. Just be sure to change $font_dir to wherever your fonts are stored. (A default font without rotation is used if none are available.)
Snippet
-
<?php
-
//
-
// Settings
-
//
-
$dbhost = ‘localhost’;
-
$dbuser = ‘username’;
-
$dbpass = ‘password’;
-
$database = ‘database’;
-
$min_char = 4;
-
$max_char = 8;
-
$font_dir = ‘./*.ttf’;
-
//
-
// Initial start
-
//
-
mysql_connect($dbhost, $dbuser, $dbpass);
-
mysql_select_db($database);
-
//
-
// Initiate image
-
//
-
header(“content-type: image/png”);
-
header(“Cache-control: no-cache, no-store”);
-
$width = rand(200, 300);
-
$height = rand(50, 70);
-
$img = imagecreate($width, $height);
-
$background = imagecolorallocate($img, rand(200, 255), rand(200, 255), rand(200, 255));
-
//
-
// Compile code
-
//
-
$array = array();
-
for ($i = 0; $i < $max_char; $i++)
-
{
-
$numeric = rand(0, 9);
-
$array[] = (rand(0, 1) == 0 || count($array) < $min_char) ? ((rand(0, 1) == 0) ? $alpha : $numeric) : ”;
-
}
-
$code = str_replace(‘0′, ‘Z’, implode(”, $array));
-
//
-
// Query database
-
//
-
$confirm_id = (eregi(‘^[a-z0-9]{32}$’, $_GET['id'])) ? $_GET['id'] : md5(uniqid($_SERVER['REMOTE_ADDR']));
-
$session_id = (eregi(“^[a-z0-9]{32}$”, session_id())) ? session_id() : ”;
-
mysql_query(“DELETE FROM captcha WHERE session_id = ‘$session_id’”);
-
mysql_query(“INSERT INTO captcha (confirm_id, session_id, code) VALUES (‘$confirm_id’, ‘$session_id’, ‘$code’)”);
-
//
-
// Create background
-
//
-
for ($i = 0; $i < rand(5, 20); $i++)
-
{
-
$color = imagecolorallocate($img, rand(0, 255), rand(0, 255), rand(0, 255));
-
$loc_x = rand(-100, $width + 100);
-
$loc_y = rand(-50, $height + 50);
-
$end_x = rand(-100, $width + 100);
-
$end_y = rand(-50, $height + 50);
-
// Background shapes
-
$shape = rand(1, 3);
-
switch ($shape)
-
{
-
case 1:
-
// Draw an ellipse
-
imageellipse($img, $loc_x, $loc_y, rand(100, 400), rand(50, 400), $color);
-
break;
-
case 2:
-
// Draw a rectangle
-
imagerectangle($img, $loc_x, $loc_y, $end_x, $end_y, $color);
-
break;
-
case 3:
-
// Draw a line
-
imageline($img, $loc_x, $loc_y, $end_x, $end_y, $color);
-
break;
-
}
-
}
-
//
-
// Compile image
-
//
-
$x_move = $width / (strlen($code) + 1);
-
$current_pos = rand(0, $x_move / 2);
-
$less_rotate = array(‘N’, ‘Z’, ‘6′, ‘9′);
-
for ($i = 0; $i < strlen($code); $i++)
-
{
-
$size = rand(15, 20);
-
$angle = (in_array($code[$i], $less_rotate)) ? rand(-15, 15) : rand(-30, 30);
-
$x_pos = $current_pos + rand($size + 1, $x_move);
-
$y_pos = $height/2 + rand(-8, 8);
-
$current_pos = $x_pos;
-
$fonts = glob($font_dir);
-
$font = $fonts[array_rand($fonts)];
-
$color = imagecolorallocate($img, rand(0, 127), rand(0, 127), rand(0, 127));
-
if (!empty($font))
-
imagettftext($img, $size, $angle, $x_pos, $y_pos, $color, $font, $code[$i]);
-
else
-
imagestring($img, 5, $x_pos, $y_pos, $code[$i], $color);
-
}
-
//
-
// Create image
-
//
-
imagepng($img);
-
imagedestroy($img);
-
/* —— MySQL Query ——
-
CREATE TABLE captcha (
-
confirm_id char(32) DEFAULT ” NOT NULL,
-
session_id char(32) DEFAULT ” NOT NULL,
-
code char(8) DEFAULT ” NOT NULL,
-
PRIMARY KEY (session_id,confirm_id)
-
);
-
*/
-
?>
-
### TEST PAGE ###
-
<?php
-
mysql_connect(‘localhost’, ‘username’, ‘password’);
-
mysql_select_db(‘database’);
-
if (isset($_POST['submit']))
-
{
-
$confirm_id = (eregi(‘^[a-z0-9]{32}$’, $_POST['confirm_id'])) ? $_POST['confirm_id'] : ”;
-
$result = mysql_query(“SELECT * FROM captcha WHERE confirm_id = ‘$confirm_id’ LIMIT 1″);
-
$row = mysql_fetch_assoc($result);
-
if (!$row || $_POST['confirm'] !== $row['code'])
-
{
-
echo ‘<b>Invalid Code:</b>’;
-
}
-
else
-
{
-
$session_id = (eregi(“^[a-z0-9]{32}$”, session_id())) ? session_id() : ”;
-
mysql_query(“DELETE FROM captcha WHERE session_id = ‘$session_id’”);
-
echo ‘<b>Valid:</b>’;
-
}
-
echo $_POST['confirm'] . ‘|’ . $row['code'] . ‘<br />’;
-
}
-
?>
-
<img src=“captcha.php?id=<?php echo $confirm_id; ?>”>
-
<form method=“post”>
-
<input type=“hidden” name=“confirm_id” value=“<?php echo $confirm_id; ?>”>
-
<input type=“text” name=“confirm” size=“30″>
-
<input type=“submit” name=“submit” value=“Submit”>
-
</form>
Add comment November 24, 2007