Hallo Iedereen,

Ik gebruik dit script om voor een naam in meerdere .txt databases te zoeken.
Maar op een 1 of andere manier kijkt hij alleen in de 1e database en niet allemaal.
Dit is mijn script, heeft iemand een idee?


<div class="content"><br />
<html><body>
<a style='font-size: 110%;'>Input:</a><br /><br />
<form method='post'>
	  <input class='form-control' placeholder='Name' name='search' size='100' /><br />
	  <input type='submit' value='Search' class='btn btn-info blue' /><br />
</form>

<br />
<?php
$path_to_check = 'dbs/';
$needle = $_POST['search'];
foreach(glob($path_to_check.'*.txt') as $filename)
{
  foreach(file($filename) as $fli=>$fl)
  {
    if(strpos($fl, $needle)!==false)
    {
      echo "<div style='width:100%;'><pre>$fl</pre></div>";
    }
  }
}
?>
</html>
</body>
</div>
Diverse fouten in je korte stukje html.

De header ontbreekt
Het documenttype ontbreekt
form wordt niet afgesloten
html wordt niet geopend
body ontbreekt
linebreaks worden afgesloten, volgens mij alleen noodzakelijk bij XML
inputs worden afgesloten, volgens mij alleen noodzakelijk bij XML
input gegevens staan tussen single quotes i.p.v. tussen dubbelquotes
geen ruimte tussen value en class
bij name ontbreken de quotes volledig

Ik denk dat ik daarmee de meeste fouten wel heb.


Overigens verwacht ik dan nog niet dat één der bovenstaande fouten er de oorzaak van is dat de gewenste gegevens niet getoond worden.
Pipo Clown op 08/10/2015 13:08:40

Overigens verwacht ik dan nog niet dat één der bovenstaande fouten er de oorzaak van is dat de gewenste gegevens niet getoond worden.


Dat andere maakt me niets uit dat fix ik zelf nog wel, het gaat erom dat de functie niet goed werkt :)
Dat andere maakt me niets uit dat fix ik zelf nog wel, het gaat erom dat de functie niet goed werkt :)

Mogelijk, maar in dit geval niet erg waarschijnlijk, is dat de medeveroorzaker van het ongewenste gedrag.

Het heeft geen zin om je af te vragen wat er in een bepaalde setting fout gaat als je WEET dat bepaalde dingen niet kloppen. Los dit eerst op, en kijk dan of de problemen nog spelen.
Ik heb het idee dat je formulier niet werkt omdat de html niet in orde is.

Staat error_reporting wel aan?
Ik denk dat ik het weet - er staat geen pad ($path_to_check) voor $filename in de file() aanroep.

>_<
Thomas van den Heuvel op 08/10/2015 13:55:39

Ik denk dat ik het weet - er staat geen pad ($path_to_check) voor $filename in de file() aanroep.

>_<


Ik heb het html gedeelte gefixt, ik geloof dat dit wel goed staat? @ $path_to_check voor $filename. Hoe zou jij het anders doen? :o
Euh, vervang file($filename) door file($path_to_check.$filename)?

Mits $path_to_check klopt - mogelijk moet je het absolute, interne bestandspad gebruiken, in plaats van simpelweg "dbs/", tenzij je het script aanroept vanaf /x/ en de tekstbestanden zich bevinden in /x/dbs/?
Pipo Clown op 08/10/2015 13:08:40

linebreaks worden afgesloten, volgens mij alleen noodzakelijk bij XML
inputs worden afgesloten, volgens mij alleen noodzakelijk bij XML
input gegevens staan tussen single quotes i.p.v. tussen dubbelquotes
bij name ontbreken de quotes volledig

In het kader van "ken uw taal": je verklaart hier een paar dingen fout die helemaal niet fout zijn.

Self-closing tags zijn in HTML niet verplicht, maar wel toegestaan.

Attribute values mogen zowel tussen enkele als tussen dubbele quotes staan. Het gebruik van quotes is zelfs niet eens verplicht, tenzij de value een spatie of ander teken bevat dat verwarring kan veroorzaken voor de parser.
Attribute values mogen zowel tussen enkele als tussen dubbele quotes staan. Het gebruik van quotes is zelfs niet eens verplicht, tenzij de value een spatie of ander teken bevat dat verwarring kan veroorzaken voor de parser.

In het kader van een eenduidige opmaak en eenduidige manier van output escaping lijkt mij dat (mede in het kader van de veiligheid/beveiliging van de applicatie) toch wel heel erg wenselijk. Als je hier geen lijn in aanbrengt liggen veiligheidsrisico's (XSS enzo) op de loer.

Reageren