Skip to content

Instantly share code, notes, and snippets.

@0x46616c6b
Forked from nyom/gist:849573
Created March 1, 2011 18:24
Show Gist options
  • Save 0x46616c6b/849598 to your computer and use it in GitHub Desktop.
Save 0x46616c6b/849598 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!";
}
}
$html = fetchsite("http://www.ba-dresden.de/index2.php?menu=5&item=20");
// Einträge aus den News ziehen und formatiert wiedergeben
$ret = preg_match_all("/<td width=\"60\" class=\"line.*.\">(.+)<td width=\"15\"class=\"line.*.\">/siU", $html, $events);
foreach($events[1] as $event) {
//print_r ($event);
$html = $event;
$ret = preg_match_all("/(.+)<\/td>.*" .
"<td width=\"90\" class=\"line.*.\">(.+)<\/td>.*" .
"<td class=\"line.*.\">(.+)<\/td>" .// auslesen in data1-3 datum,person,inhalt
"/siU", $html, $data, PREG_SET_ORDER);
$content = $data[0][3];
$date = $data[0][2];
$name = $data[0][1];
if ($mode == 'http') echo $name . "<br />" . $date . "<br />" . $content . "<br /><hr /><br />";
if ($mode == 'shell') echo strip_tags($name) . "\n" . strip_tags($date) . "\n" . strip_tags($content) . "\n\n";
}
if ($debug) {
if ($mode == "shell") echo "\n";
}
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment