| Uutiset | Koodikirjasto | Wiki | Keskustelut | FAQ | Info |
SearchGugu 16.02.05 22:13 Haku joka hakee joko otsikkotiedosta "title" tai lähdekoodista. Haku alkaa siitä kansiosta mihin koodi laitetaan ja käy kaikki alikansiot läpi.
Haku joka hakee joko otsikkotiedosta <title> tai lähdekoodista. Haku alkaa siitä kansiosta mihin koodi laitetaan ja käy kaikki alikansiot läpi. Koodi pohjautuu DJ-Dew:n pastettamaan php-haku koodin josta olen sitä vähän jatkokehitelly. Tämä on minun ensimmäinen tänne laittamani koodi, joten älkää ihan lyttyyn haukkuko :) . Varmasti usen kohdan ois voinu tehä järkevämminkin mutta.... <?php ////////////////////////// // // // Gugu // // // //////////////////////// $ab = 1; $avaa = @opendir("."); $kuva = @readdir($avaa); while($kuva = @readdir($avaa)) { if($kuva != "." && $kuva != "..") { $paate = explode(".",$kuva); $paate = array_reverse($paate); if(!is_file ($kuva)){ if($paate[1]==''){ $testi[$ab] = $kuva; $testi[$ab] = "$testi[$ab]/"; $ab++; } }} } //////////// Ensimmäiseten alikansioitten haku //// $ccb = 1; $aabis = $ab -1; $bi = 1; $lirppu = ""; alikansio($ccb, $aabis, $testi,$ab,$bi,$lirppu); /////////// Loppujen alikansioitten haku ///////// for($dee=0; $dee<= $ab; $dee++){ $tes = alikansio($ccb, $aabis, $testi,$ab,$bi,$lirppu); $ab = $tes[0]; $ccb = $tes[1]; $testi = $tes[2]; $aabis = $ab -1; $bi = $ccb; $lirppu = " . "; $deepo = 0; alikansio($ccb, $aabis, $testi,$ab,$bi,$lirppu); } ////// Kansioitten haku funktio ////// function alikansio($ccb, $aabis, $testi, $ab,$bi,$lirppu){ for($bi=$bi; $aabis>=$bi; $bi++){ // Käydään kansiot läpi $tiuku = $testi[$bi]; // otetaan kansion nimi if($lirppu ==''){ $tiuku = str_replace(".", "", $tiuku); $tiuku = str_replace("/", "", $tiuku); } $avaa = @opendir("$tiuku"); // avataan kansio $kuva = @readdir($avaa); while($kuva = @readdir($avaa)) { // käydään kaikki tiedostot läpi if($kuva != "." && $kuva != "..") { // Ei oteta tiedostolistauksessa . ja .. :ttä $paate = explode(".",$kuva); $paate = array_reverse($paate); if(!is_file ($kuva)){ if($paate[1]==''){ $testi[$ab] = $kuva; $testi[$ab] = "$tiuku/$testi[$ab]/"; $testi[$ab] = str_replace("//", "/", $testi[$ab]); // Korvataan tiedostopolussa //-merkit /-merkillä $ab++; } }} } $ccb++; } $retval[0]=$ab; $retval[1]=$ccb; $retval[2]=$testi; return $retval; // Palautetaan arvot } ////////////////// Kansion haku hommat loppuu ///////////////////////// if($_SERVER['QUERY_STRING'] == "hae") { $apu1 = 0; $apu2 = 0; $hak = ""; // Ensimmäinen hakemisto, josta etsitään $testi[0] = $hak; // Luetaan se muuttujaan $q = $_POST['q']; // Haeitaan hakukentän arvo muuttujaan q $q = strtolower($q); // Muutetaan isot kirjaimet pieniksi for($gft=0; $ab>$gft; $gft++){ // Pyöritetään muuttujan $ab verran $filut = glob($testi[$gft]."*.*"); if($filut != ''){ // Jos kansiossa on tiedostoja, jatketaan if:n sisään foreach($filut as $tied) { if($_POST['tags'] <> "on"){ $filu = strip_tags(file_get_contents($tied)); //Poistetaan tagit ja luetaan muuttujaan $filu = strtolower($filu); // Muutetaan isot kirjaimet pieniksi } else{ $filu = file_get_contents($tied); //Luetaan koko muuttuja stingiin $filu = strtolower($filu); // Muutetaan isot kirjaimet pieniksi } $ttt = str_replace(array("\r\n","\n"),"",$filu); while(@strpos($ttt,stripslashes($q),(int)$i) !== false) { if(!@in_array('...'.str_replace($q,'<i>'.$q.'</i>',trim(addslashes(substr($ttt,@strpos($ttt,$q,(int)$i)-30,80)))).'...',$pätkät[$tied])) $pätkät[$tied][] = '...'.str_replace($q,'<i>'.$q.'</i>',trim(addslashes(substr($ttt,@strpos($ttt,$q,(int)$i)-30,80)))).'...'; // trim($text, " \t."); poistaa muuttujasta \,t ja . -merkit // addslashes = Lisää \ merkkejä stringiin '-eteen // substr('ab', 0, 1); Monta merkkiä näytetään if(!$ttmmpp) { if(preg_match("/\<title\>(.*)\<\/title\>/",$ttt,$matches)){ // Löytyykö sana otsikkotekstistä $otsikko = $matches[1]; $apu1 = 0; } else { $otsikko = explode("/",$tied); // pätkitään / merkistä $otsikko = end($otsikko); $apu1 = 0; } echo '<a href="'.$tied.'"><b>'.$otsikko.'</b></a><br \>'; // Tulostetaan hakutulokseen linkki $ttmmpp = true; } $var = true; $i++; } if($var && is_array($pätkät[$tied])) { foreach($pätkät[$tied] as $pätkä) { if ($apu1 != 0){ $tarkistus = $pätkä; } $apu1++; if ($tarkistus != $pätkä){ // tarkistetaan että sisältö on muuttunu, estetään sama tulostus $pätkä = strip_tags($pätkä); $pätkä = htmlspecialchars($pätkä); echo stripslashes($pätkä).'<br \><br \>'; // postetaan \ merkkejä tulostuksesta } } } unset($var); // Tyhjennetään muuttujat unset($i); unset($ttmmpp); unset($pätkät); } } } if ($pätkä == ''){ // Hakutulos tyhjä echo 'Hakusanalla ei löytynyt mitään'; } } else { // Jos ei ole haku päällä näytetään hakulomake echo '<form action="?hae" method="post">'; echo '<input type="text" name="q"><br \>Etsi lähdekoodista<input type="checkbox" name="tags"><br \>'; echo '<input type="submit">'; echo '</form>'; } ?> editoitu: 01:13 17.2.05 Kryil 01:12 17.2.05 Jaaha. Kuhassa näyttää olevan aukko. Kas kun ei ole vielä huomattu. Katsokaapa koodin kuvausta, ja sivun lähdekoodia samasta kohdasta. Sama pätee koodikirjasto-sivun listaukseen. Hyväksikäyttäjille tukkapöllyä! Ztane 09:05 17.2.05 kannattasko ihan silti kirjottaa <br />? Akiro 10:31 17.2.05 Kryil kirjoitti: Mikä ihmeen aukko? htmlspecialchars jääny pois tuosta, mutta kerropa miten tuosta saa "aukon", eli pääset serverille tmv.Jaaha. Kuhassa näyttää olevan aukko. Kas kun ei ole vielä huomattu. Katsokaapa koodin kuvausta, ja sivun lähdekoodia samasta kohdasta. Sama pätee koodikirjasto-sivun listaukseen. Hyväksikäyttäjille tukkapöllyä! Irksome 11:27 17.2.05 Joku fiksuhan vois heittää vaikka goatsen tuohon. Aukkohan se on sekin :) editoitu: 14:23 17.2.05 Tuxe 12:14 17.2.05 Jep. Mä pistin redirectin goat.cx:ään. Ja otin jo pois, älkää bannatko :P editoitu: 15:08 17.2.05 T.M. 15:08 17.2.05 Kumma kun tää sivu ei näy IE:llä lainkaan... Juuh, näemmä voi tunkee HTML:ää kuvaukseen. Ettekö aio ollenkaan korjata moista "aloittelijan mokaa"? webster 19:32 25.2.05 Hyvinhän tuo tuntuu toimivan, mutta: Suurin osa sivuistani on tekstitiedostoja ja osoite on esim. www.osoite.com/sivu.php?page=asia Haku löytää toki kyseisen tekstitiedoston, mutta se näkyy siis vain tekstitiedostona eikä varsinaisena html-sivuna. Auttaako mikään? |
![]() Haku
|