#!/usr/bin/php
<?php
// do not run on the web
if(isset($_SERVER['SERVER_NAME'])) {
exit;
}
// the special array $argv contain the script name
// followed by the arguments. Define arguments
// the table to get the random row from
if(isset($argv[1])) {
$table=$argv[1];
}
// the table column
if(isset($argv[2])) {
$column=$argv[2];
}
// the file
if(isset($argv[3])) {
$file=$argv[3];
}
// the first argument is the usermane
if(isset($argv[4])) {
$username=$argv[4];
}
// the second argument is the password
if(isset($argv[5])) {
$password=$argv[5];
}
if(! isset($password)) {
print "You need five argument: table, column, file, username and password\n";
exit;
}
// the file path is supposed to be relative to the user's
// public_html directory
$home_dir='/home/'.$username;
// check that the homedirectory exists
if(! is_dir($home_dir)) {
print "No such user: $username,\n";
print "because no such directory: $home_dir.\n";
exit;
}
// the public_html directory
$public_dir=$home_dir.'/public_html';
// the name of the output file
$out_file_name="$public_dir/$file";
// try to open file
$out_file = fopen($out_file_name, "w");
if(! $out_file) {
print "Could not open file for writing: $out_file_name\n";
exit;
}
//now proceed to the databaes
$link=@mysqli_connect('localhost',$username,$password);
if (!$link) {
print "mysql error: ";
print mysqli_connect_error();
print "\n";
exit;
}
// the datebase is the same as the user name
@mysqli_select_db($link,$username) ;
report_error($link);
// select all records from the table
$query='SELECT * from '.$table.';';
$result=@mysqli_query($link,$query);
report_error($link);
// form a keys numeric array with the first
while($columns=mysqli_fetch_array($result)) {
if(! isset($columns[$column])) {
print "Column \"$column\" in not defined in table $table.\n";
print "The password given was $password\n";
exit;
}
// the array of the columns
$column_to_random[]=$columns[$column];
}
// from http://php.net/function.array-rand.php
srand((float) microtime() * 10000000);
$random_column=array_rand($column_to_random, 1);
// the output has the timestamp and the value of the column
$out_string =time()." $random_column\n";
// write out_string to file
fwrite($out_file,$out_string);
// close out_file
fclose($out_file);
// The End
function report_error ($link) {
$error=mysqli_error($link);
if($error) {
print "mySQL error: $error\n";
exit;
}
}
?>