loop/link.php

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" );
?>