Skip to content

Instantly share code, notes, and snippets.

@0x46616c6b
Created March 2, 2011 14:13
Show Gist options
  • Save 0x46616c6b/850989 to your computer and use it in GitHub Desktop.
Save 0x46616c6b/850989 to your computer and use it in GitHub Desktop.
<?php
ini_set('default_charset', 'UTF-8');
$debug = 1;
$mode = NULL;
function fetchsite($url = NULL, $matrikel = NULL, $password = NULL) {
global $debug, $mode;
if ($debug) {
if ( isset($_GET['matrikel']) && isset($_GET['password']) ) {
// curl http://localhost/test.php?matrikel=<matrikel>&password=<password>
$matrikel = $_GET['matrikel'];
$password = $_GET['password'];
$mode = 'http';
} else if ( isset($_SERVER['argc']) && $_SERVER['argc']>=1 ) {
// php -f file.php <matrikel> <password>
$matrikel = $_SERVER['argv']['1'];
$password = $_SERVER['argv']['2'];
$mode = 'shell';
}
}
$login_url = "http://www.ba-dresden.de/index2.php?menu=5";
$cookie = tempnam(sys_get_temp_dir(), 'cookie');
if ( $url && $matrikel && $password ) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt($ch, CURLOPT_URL, $login_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "matrikelnr=" . $matrikel . "&passwort=" . $password);
ob_start(); // prevent any output
curl_exec($ch); // execute the curl command
ob_end_clean(); // stop preventing output
curl_close($ch);
unset($ch);
if ($debug) {
if (file_exists($cookie)) {
$f = fopen($cookie, "r");
if ($mode == 'http') echo "<pre>+ + + C O O K I E + + +";
if ($mode == 'shell') echo "+ + + C O O K I E + + +\n";
while (!feof($f)) {
$buffer = fgets($f, 4096);
if ( strpos($buffer, "#") === false ) echo $buffer;
}
fclose($f);
if ($mode == 'http') echo "+ + + + + + + + + + + +</pre>";
if ($mode == 'shell') echo "+ + + + + + + + + + + +";
} else {
if ($mode == 'http') echo "<pre>+ + + N O C O O K I E + + +</pre>";
}
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec($ch);
curl_close($ch);
unset($ch);
unlink($cookie);
return html_entity_decode(htmlentities($result));
} else {
if ($debug) echo "Worst!";
}
}
function render2json($type = NULL) {
global $matrikel, $password;
if ( $type == "news" ) {
$url = "";
$html = fetchsite( $url, $matrikel, $password);
// routine für die news
return $json;
} else if ( $type == "marks" ) {
$url = ""
$html = fetchsite( $url, $matrikel, $password);
// routine für die noten
} else {
die "Routine nicht bekannt";
}
}
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment