y0y0y Skrevet 30. oktober 2011 Forfatter Del Skrevet 30. oktober 2011 Den er grei. Lenke til kommentar
Matsemann Skrevet 30. oktober 2011 Del Skrevet 30. oktober 2011 echo '<p><strong>Hashes for the string "' . $_POST['string'] . '"</strong></p>'; Den der er åpen for XSS.. Lenke til kommentar
j-- Skrevet 30. oktober 2011 Del Skrevet 30. oktober 2011 Det er et lokalt verktøy, så fant det ikke nødvendig å strippe vekk potensiell skadelig kode. Skulle den vært tilgjengelig fro alt og alle burde det selvføligelig vært gjort Lenke til kommentar
Occi Skrevet 14. november 2011 Del Skrevet 14. november 2011 Har laget en tråd med info og diskutering angående hvordan man burde eller kan sette opp en side basert på inkludering og klassebruk (objektorientert). Hvis du føler for å diskutere koden eller hva som er best osv., vennligst ta det i tråden. Hadde vært flott med andres synspunkter/tilbakemeldinger på oppsettet, særlig siste posten med index-fil. Her er en kode for oppsett av side med klassebruk og inkludering (www.example.com?p=foo). Med få modifikasjoner burde du klare å ta denne i bruk uten store problemer. Igjen, ved spørsmål bruk tråden min. index.php <?php require("classes/index.php"); $index = new Index(); // inkluderer klasser, case sensitive $classes = array('DB_Connect', 'IPLog', 'Cart', 'Project'); // skriver inn hvilke ?f= som er godtatt (dvs. som ikke gir 404) $fAllow = array(); // skriver inn hvilke ?p= som er godtatt $pAllow = array('foo', 'bar'); $session = false; // lagt opp til bruk av sessions for seinere bruk, se klasse // ender til slutt opp i <title><?= $this->title; ?></title> $title = "A cat is fine too"; $titleArray = array('foo' => "Foo the foo", 'bar' => "Bar the bar"); // brukes for å endre tittel // sender med all nødvendig info til klassen index, etter det her er siden ferdig $index->init($classes, $fAllow, $pAllow, $session, $title, $titleArray); ?> classes/index.php <?php class Index { // lister opp interne variabler, brukes på tvers av funksjoner, // og må derfor bruke $this->foo public $title; private $titleArray; private $db_connect, $iplog; public function init($classes, $fAllow, $pAllow, $session, $title, $titleArray) { error_reporting(E_ALL ^ E_NOTICE); // error-konfigurering header("Content-Type: text/html; charset=UTF-8"); // force UTF8 $this->classes($classes); // inkluderer og oppretter klassene // legger tittel og titleArray i $this-> pga. brukes i flere funksjoner $this->title = $title; $this->titleArray = $titleArray; $pAllow[] = '404'; // legger til 404 som standard if($session) // hvis man vil bruke sessions { session_start(); } // eksempel på hvor man kan plassere ip-logging $this->iplog->logIP(); $this->page($fAllow, $pAllow); // går videre til å faktisk opprette siden } private function classes($classes) { foreach($classes as $class) { // merk strtolower pga. den er sendt inn med casesensitive // !!! mangler en sjekk på om fil eksisterer, har ikke laget enda !!! require("classes/" . strtolower($class) . ".php"); } foreach($classes as $class) { // ikke optimal løsning enda, krever manuell innskriving // av klasser i toppen av filen, tanken er at det skal være // mer eller mindre kun avhengig av parameter (fremtidsrettet!) $tempClass = strtolower($class); // $this->$tempClass vil gi f. eks $this->iplog $this->$tempClass = new $class(); } } private function page($fAllow, $pAllow) { // henter ?f= og ?p= $f = $_GET['f']; $p = $_GET['p']; // home.php er forsideteksten, // kan derfor like godt redirectes til DocumentRoot if($p == 'home') { header("Location: /"); } else if(!empty($f)) // test for fil i mappe { if(in_array($f, $fAllow)) // mappe godtatt? hvis ikke 404 { if(!empty($p)) { if(in_array($p, $pAllow)) // side er godtatt, hvis ikke 404 { if(file_exists($f."/".$p.".php")) // finnes filen? { // manipulerer tittel etter hva som er hentet $this->title($p, $f); // henter fil $p i mappe $f $require = $f."/".$p; } else { $require = '404'; } } else { $require = '404'; } } else { $require = "home"; } } else { $require = '404'; } } else if(!empty($p)) // test for kun fil { if(in_array($p, $pAllow)) { if(file_exists($p . ".php")) { $this->title($p); $require = $p; } } else { $require = '404'; } } else // ingenting satt, skriver forside { $require = "home"; } // <html>, <head>, start på <body>, nav/header require("includes/head.php"); // sidecontent require($require . ".php"); // footer, slutt på <body> og <html> require("includes/footer.php"); } private function title($page) { // isset() er faktisk raskere enn array_key_exists() // gir FALSE hvis array['foo'] == NULL // ikke et problem for oss, da vi selv har laget arrayen if(isset($this->titleArray[$page])) { $this->appendTitle($this->titleArray[$page]); } } private function appendTitle($prestring) { if(!empty($prestring)) { // legger til noe á 'Foo the foo' foran hovedtittel $this->title = $prestring . " - " . $this->title; } } } ?> Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå