Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[PHP] filter functie

Pagina: 1
Acties:

  • Jay-Connected
  • Registratie: Februari 2004
  • Laatst online: 11-03-2024
Beste tweakers,

Ik heb een scriptje in elkaar gefietst en loop vast:
code:
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<!--
Author: J.A. van der Kruit
Name: index.php
Function: LDAP telefoonboek
Version: 1.0
Date last change: 4-12-13
-->

<html>
    <!-- styles -->
    <link href="style.css" rel="stylesheet">

<div  id="imp_style" class="imp_form">
 <form action="" method="post">
   <h1>Zoek criteria:</h1><br>
    <input type="text" name="keyword" size="30" maxlength="30" value="" />
    <!--Filter:-->
    <select name="filter">
        <option value="sn">Ik wil zoeken op:</option>
        <option value="givenname">Voornaam</option>
        <option value="sn">Achternaam</option>
        <option value="postalcode">Kantoor</option>
        <option value="gecos">Functie</option>
    </select>
    <input type="submit" value="Zoeken" size="20" />
  </form>
<?php
//if(isset ($_POST['q']) &&!empty($_POST['q']) )
//{
// Designate a few variables
$host = "192.168.60.1";
$user = "";
$pswd = "";

$ad = ldap_connect($host)
      or die( "Could not connect!" );

// Set version number
ldap_set_option($ad, LDAP_OPT_PROTOCOL_VERSION, 3)
     or die ("Could not set ldap protocol");

// Binding to ldap server
$bd = ldap_bind($ad)
      or die ("Could not bind");

// Create the DN
$dn = "ou=Users,dc=***,dc=nl";

// Specify only those parameters we're interested in displaying
$attrs = array("postalcode","cn","givenname","mail","telephoneNumber", "gecos", "description");

// Create the filter from the search parameters
$filter = $_POST['filter']."=".$_POST['keyword']."*";

$search = ldap_search($ad, $dn, $filter, $attrs)
          or die ("");

$entries = ldap_get_entries($ad, $search);

if ($entries["count"] > 0) 
    {
    for ($i=0; $i<$entries["count"]; $i++) 
    {
       echo "<br>"; 
       echo "<p><b>Naam: </b>".$entries[$i]["cn"][0]."<br />";
//     echo "<b>Functie: </b>".$entries[$i]["gecos"][0]."<br />";
//     echo "<b>Kantoor: </b>".$entries[$i]["postalcode"][0]."<br />";
       echo "<b>Mobiel nummer: </b>".$entries[$i]["telephonenumber"][0]."<br />";
       echo "<b>Email: </b><a href=mailto:".$entries[$i]["mail"][0].">".$entries[$i]["mail"][0]."</a></p>";
    }

    } else {
       echo "<p>Geen resultaten gevonden!</p>";
    }
    
ldap_unbind($ad); 
//}
?>
</div>
</html>


En het werkt.. Waarvoor hulde, want ik ben helemaal geen programmeur..
Nu zal ik zo graag willen dat het script alleen entries laat zien als deze een telefoon nummer hebben.
In onze LDAP staan namelijk ook kamers en auto's als gebruikers, en die wil ik niet in het telefoon boek hebben.

Kan iemand mij verder helpen?

Groet,

John

Bovenaan :)


  • Miyamoto
  • Registratie: Februari 2009
  • Laatst online: 20-11 21:15
http://php.net/ldap_search
http://technet.microsoft.com/en-us/library/aa996205.aspx
* (wildcard)
You use the wildcard operator to represent a value that could be equal to anything. One such situation might be if you wanted to find all objects that have a value for title. You would then use:
(title=*)
Je commentaar is redelijk overbodig --> "Binding to ldap server, ldap_bind()" Idem voor andere regels. Ook mag je nooit zomaar vertrouwen op user-input. Check dus of het geposte 'filter' in je lijst zit, bijv met in_array. Verder zou ik je naam even weghalen uit het topic.

  • Joolee
  • Registratie: Juni 2005
  • Niet online
Wat je wil heeft weinig met PHP te maken maar meer met LDAP. Je zult een correcte LDAP query in elkaar moeten zetten om de informatie te achterhalen die je zoekt.

  • Jay-Connected
  • Registratie: Februari 2004
  • Laatst online: 11-03-2024
Hmm ik dacht ietst met if telephonenumber then tralal.
Maar bedankt voor jullie hulp :)

Bovenaan :)


  • Miyamoto
  • Registratie: Februari 2009
  • Laatst online: 20-11 21:15
Jay-Connected schreef op vrijdag 28 februari 2014 @ 09:36:
Hmm ik dacht ietst met if telephonenumber then tralal.
Maar bedankt voor jullie hulp :)
Dat is een smerige oplossing, maar werkt ook inderdaad. Je haalt dan zeg 1000 records op, maar laat er maar 10 zien. Performance-wise dus niet wenselijk, zeker niet als de oplossing eenvoudig is met een juiste LDAP query.

  • Jay-Connected
  • Registratie: Februari 2004
  • Laatst online: 11-03-2024
Ja we hebben maar 300 medewerkers..

Bovenaan :)


  • MueR
  • Registratie: Januari 2004
  • Laatst online: 22-11 12:49

MueR

Admin Devschuur® & Discord

is niet lief

Dus? Als je op naam zou gaan zoeken, haal je dan ook alle records op om er in PHP door te lopen? Je moet je data laten filteren door je datasource, niet in je code zelf.

Anyone who gets in between me and my morning coffee should be insecure.


  • Jay-Connected
  • Registratie: Februari 2004
  • Laatst online: 11-03-2024
Gelijk in... helaas weet ik echt niet hoe dat moet. :(

Bovenaan :)


  • Storm90
  • Registratie: September 2008
  • Laatst online: 09-09 15:23
Gokje:
code:
1
$filter = $_POST['filter']."=".$_POST['keyword']."*";

wijzigen in:
code:
1
$filter = "(&(".$_POST['filter']."=".$_POST['keyword']."*)(telephonenumber=*))";


Korte uitleg:
& = zoek data welke voldoet aan ALLE criteria ( | = zoek enkel welke doet aan één of meerdere criteria)
* = zoek data welke tenminste een waarde bevat.

PS. Ik weet niet of het keyword "telephonenumber" klopt, volgens jouw datasource.

[ Voor 41% gewijzigd door Storm90 op 28-02-2014 10:45 ]


  • Jay-Connected
  • Registratie: Februari 2004
  • Laatst online: 11-03-2024
code:
1
PHP Parse error:  syntax error, unexpected 'telephonenumber' (T_STRING) in /var/www/sk-tools/boekje.php on line 61, referer: http://192.168.50.81/sk-tools/boekje.php

en
code:
1
PHP Parse error:  syntax error, unexpected 'telephoneNumber' (T_STRING) in /var/www/sk-tools/boekje.php on line 61, referer: http://192.168.50.81/sk-tools/boekje.php

Bovenaan :)


  • Jay-Connected
  • Registratie: Februari 2004
  • Laatst online: 11-03-2024
Bedankt voor de uitleg Erik! Zo leer ik er ook nog iets van!

Bovenaan :)


  • Storm90
  • Registratie: September 2008
  • Laatst online: 09-09 15:23
Jay-Connected schreef op vrijdag 28 februari 2014 @ 10:44:
Bedankt voor de uitleg Erik! Zo leer ik er ook nog iets van!
Graag gedaan ;) Ik heb overigens mijn vorige comment aangepast. Ik heb de code even in een editor geopend en de quotes om "telephonenumber" moesten weg.

  • Jay-Connected
  • Registratie: Februari 2004
  • Laatst online: 11-03-2024
Erik,

Je bent echt een held!!

Het doet wat het moet doen

Bovenaan :)


  • Storm90
  • Registratie: September 2008
  • Laatst online: 09-09 15:23
Jay-Connected schreef op vrijdag 28 februari 2014 @ 10:47:
Erik,

Je bent echt een held!!

Het doet wat het moet doen
Haha graag gedaan! Blij dat het werkt ;)

Overigens komt deze link je misschien nog ooit van pas, staan alle operators in die je kunt gebruiken in de filter van ldap:
Table of operators used in ldapsearch search filters

  • Jay-Connected
  • Registratie: Februari 2004
  • Laatst online: 11-03-2024
Meteen opslaan die handel!
Topic kan dicht!

Bovenaan :)

Pagina: 1