PHP DBlookup

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jeroen dj

Jeroen dj

08/10/2015 11:46:34
Quote Anchor link
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?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<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>
Gewijzigd op 08/10/2015 14:40:20 door Joni Fleischer
 
PHP hulp

PHP hulp

28/03/2024 15:16:12
 
- SanThe -

- SanThe -

08/10/2015 11:52:32
Quote Anchor link
Diverse fouten in je korte stukje html.

Joni Fleischer:
Zou je ook willen uitleggen wat voor fouten er dan in zitten?
Gewijzigd op 08/10/2015 11:54:33 door Joni Fleischer
 
Pipo Clown

Pipo Clown

08/10/2015 13:08:40
Quote Anchor link
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.
Gewijzigd op 08/10/2015 13:10:19 door Pipo Clown
 
Jeroen dj

Jeroen dj

08/10/2015 13:37:10
Quote Anchor link
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 :)
 
Thomas van den Heuvel

Thomas van den Heuvel

08/10/2015 13:52:35
Quote Anchor link
Quote:
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.
 
- SanThe -

- SanThe -

08/10/2015 13:53:07
Quote Anchor link
Ik heb het idee dat je formulier niet werkt omdat de html niet in orde is.

Staat error_reporting wel aan?
 
Thomas van den Heuvel

Thomas van den Heuvel

08/10/2015 13:55:39
Quote Anchor link
Ik denk dat ik het weet - er staat geen pad ($path_to_check) voor $filename in de file() aanroep.

>_<
Gewijzigd op 08/10/2015 13:56:53 door Thomas van den Heuvel
 
Jeroen dj

Jeroen dj

08/10/2015 14:28:39
Quote Anchor link
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
 
Thomas van den Heuvel

Thomas van den Heuvel

08/10/2015 14:34:53
Quote Anchor link
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/?
 
Willem vp

Willem vp

08/10/2015 19:01:35
Quote Anchor link
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.
 
Thomas van den Heuvel

Thomas van den Heuvel

08/10/2015 19:40:30
Quote Anchor link
Quote:
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.
 
Willem vp

Willem vp

08/10/2015 21:00:48
Quote Anchor link
Thomas van den Heuvel op 08/10/2015 19:40:30:
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.

Dat was mijn punt niet. Het ging mij er in dit geval om dat je niet moet beweren dat iets ongeldig is als het gewoon volledig valide is.

Uiteraard is het wel handig om een vaste lijn aan te houden, maar dat is vooral handig om het teruglezen (en begrijpen) van je code te vergemakkelijken. Als je het voor de veiligheid van je code moet hebben van het feit of je enkele of dubbele quotes gebruikt, ben je dertig stappen geleden al verkeerd gelopen.
 
Jeroen dj

Jeroen dj

10/10/2015 10:37:52
Quote Anchor link
Nog steeds niet opgelost :s, geen idee hoe ik dit moet doen
 
Willem vp

Willem vp

10/10/2015 11:45:12
Quote Anchor link
Ik heb de code zelf eens uitgeprobeerd, en bij mij werkt de code correct.

Waardoor krijg jij de indruk dat alleen het eerste bestand wordt verwerkt?
 
Jeroen dj

Jeroen dj

10/10/2015 11:46:11
Quote Anchor link
Willem vp op 10/10/2015 11:45:12:
Ik heb de code zelf eens uitgeprobeerd, en bij mij werkt de code correct.

Waardoor krijg jij de indruk dat alleen het eerste bestand wordt verwerkt?


Als ik een lijn uit het 1e bestand zoek vind hij die wel maar een 2e bestand niet :s
 
Willem vp

Willem vp

10/10/2015 12:24:25
Quote Anchor link
> Als ik een lijn uit het 1e bestand zoek vind hij die wel maar een 2e bestand niet :s

Ja, maar is dat omdat hij het tweede bestand niet verwerkt, of omdat je een $needle hebt opgegeven die alleen in het eerste bestand is terug te vinden? ;-)

Je zou eens kunnen proberen om vóór de tweede foreach iets als echo "<pre>$filename</pre>"; te zetten om te kijken welke bestanden worden verwerkt. En desnoods zet je voor de if een echo "<pre>$fl</pre>"; om te kijken welke input wordt verwerkt. Alleen dan kun je er zeker van zijn of je script alleen in het eerste bestand zoekt.
 
Pipo Clown

Pipo Clown

10/10/2015 13:01:06
Quote Anchor link
Kijk eensnaar onderstaande code, je foutafhandeling kan je misschien verder helpen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php

error_reporting(E_ALL);
ini_set('display_errors', 'On');

    if (isset($_POST['submit']))    {
        
        $error = '';
        $path_to_check = 'dbs/';
        $result = array();

        if (!is_dir($path_to_check))     {
            $error .= 'Directorie bestaat niet.<br>';
        }

    
        $needle = $_POST['search'];
        if ($needle == '')  {
            $error .= 'Geen zoekterm ingevuld.<br>';
        }

    
        if ($error == '')   {
            if ($lezer = opendir($path_to_check)) {
                while (false !== ($entry = readdir($lezer))) {
                    if ($entry != "." && $entry != ".." && !is_dir($entry)) {
                        if(strpos($entry, $needle)!= false)  {
                            $result[] = $entry;
                        }
                    }
                }

                closedir($lezer);
            }

             else echo 'Kan de directorie niet openen.<br>';
        }

        else echo $error;
    }

    
    if (count($result) > 0)  {
        foreach ($result as $r) {
            echo $r.'<br>';
        }

        echo '<br>'
    }
    else echo 'Geen resultaten gevonden.<br><br>'      
        
?>


<html>
    <body>
        <div class="content">
            <br>
            <a style="font-size: 110%;">Input:</a>
            <br><br>
            <form action="index.php" method="post">
                <input class="form-control" placeholder="Name" name="search" size="100" /><br>
                <input type="submit" value="Search" name="submit" id="submit" class="btn btn-info blue"><br>
            </form>
            <br>
        </div>
    </body>
</html>
Gewijzigd op 10/10/2015 13:02:41 door Pipo Clown
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.