80 lines
1.6 KiB
PHP
Executable File
80 lines
1.6 KiB
PHP
Executable File
<?php
|
|
|
|
$id_key = "id";
|
|
$go_key = "go";
|
|
$id = 0;
|
|
$go = "e";
|
|
|
|
if( isset( $_GET ) && !empty( $_GET ) ) {
|
|
$a_keys = array_keys( $_GET );
|
|
if( in_array( $id_key, $a_keys ) && isset($_GET[$id_key]) ) {
|
|
$id = $_GET[$id_key] * 1;
|
|
} else {
|
|
// ID is not valid
|
|
print "i02. ";
|
|
exit();
|
|
}
|
|
if( in_array( $go_key, $a_keys ) && isset($_GET[$go_key]) ) {
|
|
// first character of what should be a string
|
|
$go = $_GET[$go_key][0];
|
|
if( $go != "n" && $go != "p" && $go != "r" ) {
|
|
print "g02. ";
|
|
exit();
|
|
}
|
|
} else {
|
|
// ID is not valid
|
|
print "g01. ";
|
|
exit();
|
|
}
|
|
} else {
|
|
// ID is not valid
|
|
print "i01. ";
|
|
exit();
|
|
}
|
|
// ID is too small
|
|
if( $id < 0 ) {
|
|
print "i03. ";
|
|
exit();
|
|
}
|
|
|
|
// Now get load the data
|
|
require( 'ring.php' );
|
|
|
|
// ID is too large
|
|
if( $id >= $ring_size ) {
|
|
print "i04. ";
|
|
exit();
|
|
}
|
|
|
|
$last = $ring_size - 1;
|
|
$index = array_keys( $web_ring );
|
|
|
|
/* =============================================================================== */
|
|
|
|
$go_url = "";
|
|
|
|
if( $go == "r") {
|
|
$go_url = $web_ring[$index[rand(0,$last)]];
|
|
} else {
|
|
$prev = "";
|
|
$next = "";
|
|
if( $id == $last ) { // are we at the end?
|
|
$next = $index[0]; // first one
|
|
$prev = $index[$id-1]; // previous one
|
|
} else if( $id == 0 ) { // are we at the beginning?
|
|
$next = $index[$id+1]; // next one
|
|
$prev = $index[$last]; // last one
|
|
} else { // somewhere in the middle
|
|
$next = $index[$id+1];
|
|
$prev = $index[$id-1];
|
|
}
|
|
if( $go == "p" ) {
|
|
$go_url = $web_ring[$prev];
|
|
} else if( $go == "n" ) {
|
|
$go_url = $web_ring[$next];
|
|
}
|
|
}
|
|
|
|
header( "Location: $go_url" );
|
|
|
|
?>
|