bayano
Goto Top

Eingabeformular Eintrag prüfen ob im AD vorhanden

Hallo,

ich habe Folgende Frage:
Ich hab ein Eingabeformular mit HTML/PHP erstellt. In diesem Formular muss dann der Benutzer einen Namen und eine wunsch E-Mail eingeben, daneben ist ein Button auf dessen Klick überprüft werden soll ob der Name und die Mail im Active Directory schon existieren. Danach soll ein Popup oder etwas ähnliches(Meldung) kommen ob Name und Mail schon existieren oder nicht. das Formular soll aber mit allen einträgen so bleiben und nicht neu gelade werden, das die schon eingegebenen Daten weg sind.

<html>
  <head>
    <title> Title
    </title>
  </head>
  <Body>
    <form name="Formular" action="mail_senden.php" method="post">  
      <table>
        <tr>
          Anmeldename:</td>
          <td>
            E-Mail:</td>
        </tr>
        <tr>
          <td>
            <input type="varchar" size="28" maxlength="40" name="Anmeldename" ></td>  
          <td>
            <input type="varchar" size="28" maxlength="40" name="EMail" ></td>  
        </tr>
      </table>
      <input type="button" name="ueberpruefen" value="Überprüfen" ></td>  
      <input type="submit" name="Senden" value="Senden"></td>  
      <input type="reset" value="Löschen"></td>   
  </Body>
</Html>

Kann mir jemand helfen? Mit PHP kenne ich mich noch nicht so aus.

MFG
Sascha

Content-ID: 58084

Url: https://administrator.de/contentid/58084

Ausgedruckt am: 22.11.2024 um 21:11 Uhr

Bayano
Bayano 15.06.2007 um 08:43:25 Uhr
Goto Top
Ich hab jetzt erst einmal eine Lösung, das ich erst einmal prüfe ob die Felder gefüllt sind, das Formular wird solange wiederholt bis alle Felder gefüllt sind. Jetz möchte ich wenn alle felder gefüllt sind an eine neue Seite weiterleiten. hier ist mein Problem, ich weiss nicht wie ich das anstellen soll. Zusätzlich weiss ich noch nicht wie ich die Feldeingabe mit dem AD abgleiche und prüfe ob der Eintrag schon vorhanden ist.

Mein Quellcode:
<?php
                  // Base DN bezeichnet die oberste OU unter der die User zu finden sind. 
                  $basedn = "CN=Users,DC=domain,DC=loc";  
                  $server = "server.domain.loc";  
                  // da der Zugriff auch ohne Anmeldung möglich sein soll, hab ich einen extra User im AD angelegt, um mich mit dem Server zu verbinden.
                  $username_ein = $_POST["TUsern"];  
                  $password = $_POST["TPasswd"];  
                  $username =  stripslashes($username_ein);
                  $ldap_port = "389";  
                  // LDAP Abfrage 
                  // ich hab einen erweiterten Filter genommen, da ich nicht nur die User des AD haben wollte, sondern auch Kontakteinträge.
                  //$filter = "(&(objectClass=user)(objectCategory=person)(cn=*))"; 
                  //$filter = "(&(|(objectClass=user)(objectClass=contact))(objectCategory=person)(cn=*))"; 
                  $filter = "(&(|(objectClass=user))(objectCategory=person)(cn=*))";  
    ?> 
<?php
                  // Verbindung zum AD herstellen
                  $connectid = @ldap_connect($server)or die("Keine Verbindung zum LDAP server möglich.");  
    ?> 
<?php
                  // Ihr könnt dies auch nutzen, um z.B. Usernamen und Passwort z.B. fürs Intranet zu verifizieren.
                  $binding = @ldap_bind($connectid,$username,$password) or die("Fehler beim Anmelden des Benutzers.");  
    ?> 
<?php
                  // AD auslesen
                  $search = @ldap_search($connectid,$basedn,$filter);
                  $result = ldap_get_entries($connectid,$search);
    ?>
<?php
//------------------------------------------------------------------------------
?>
<?php
    $exist_mail = "0";  
    // Wenn auf 'Eintragen' geklickt wurde, prüfe das Formular 
    if(isset($_POST['submit']) AND $_POST['submit']=='Eintragen'){  
        // Fehlerarray erzeugen
        $errors = array();
         // Prüfen, ob alle Felder existieren
         if(!isset($_POST['Email']))  
             $errors = "Bitte benutzen sie unser Formular.";  
         else{
                 // Prüfen, ob Name und Email nicht leer sind
                 if(trim($_POST['Dienststelle'])=='')  
                     $errors = "Bitte geben Sie ihre Dienstselle ein.";  
                 if(trim($_POST['TelefonnummerM'])=='')  
                     $errors = "Bitte geben Sie ihre Telefonnummer ein.";  
                 if(trim($_POST['Datum'])=='')  
                     $errors = "Bitte geben Sie das Umstellungsdatum ein.";  
                 if(trim($_POST['Rufname'])=='')  
                     $errors = "Bitte geben Sie den Rufnamen ein.";  
                 if(trim($_POST['Vorname'])=='')  
                     $errors = "Bitte geben Sie den Vornamen ein.";  
                 if(trim($_POST['Nachname'])=='')  
                     $errors = "Bitte geben Sie den Nachnamen ein.";  
                 if(trim($_POST['Email'])=='')  
                     $errors = "Bitte geben Sie ihre Email-Adresse ein.";  
                 if(trim($_POST['Anmeldename'])=='')  
                     $errors = "Bitte geben Sie den gewünschten Anmeldenamen ein.";  
                 if(trim($_POST['PCNr'])=='')  
                     $errors = "Bitte geben Sie die gewünschte PC Nr ein.";  
                 if(trim($_POST['Telefon'])=='')  
                     $errors = "Bitte geben Sie die gewünschte Telefonnummer ein.";  
                 if(trim($_POST['Pfad'])=='')  
                     $errors = "Bitte geben Sie den gewünschten UNC-Pfad ein.";  
                /*
                $anzahl = ldap_count_entries($connectid,$search);
                $arrMail = array();
                for ($i=0; $i<$anzahl; $i++) {
                      $mail = $result[$i]["cn"]; 
                      array_push( $arrMail,$mail );
                }
                asort($arrMail);
                foreach($arrMail As $aMail){
                  if($_POST['Email']==$aMail)  
                  $exist_mail = "1"; 
                }
                if($exist_mail == '1') 
                $errors = "Die gewählte Mailadresse existiert schon."; 
                */
         }
    }
    // Wenn das Formular geprüft wurde und kein Fehler gefunden wurde verarbeite die Daten
    if(isset($errors) AND !count($errors)){
    // z.B. Speichern in einer Datenbank oder Textdatei...
         echo "Vielen Dank!<br>\n".  
              "Ihre Informationen wurden erfolgreich weitergeleitet.";  
    }
    // Beim ersten Aufruf oder beim Finden eines Fehlers wird das Formular angezeigt
    else {
        // Wurde bei der Formularprüfung ein Fehler gefunden wird er über dem Formular ausgegeben
         if(isset($errors)){
             echo "Sorry, Ihre Daten konnten noch nicht weitergeleitet werden, weil sie noch nicht komplett sind.<br>\n".  
                       "<br>\n";  
             foreach($errors as $error)
                 echo $error."<br>\n";  
             echo "<hr>\n";  
         }
?>


<!--
//--------------------------------------------------------------------------------------------------------------
// Hier fängt die Internetseite an
//--------------------------------------------------------------------------------------------------------------
-->
<title> Benutzer anlegen
</title>
<font size="+5">  
  <font color="#29528c">  
    <b>
      <div align="center"> ADV-Koordination  
      </div></b>
  </font>
</font>
<font size="+2">  
  <font color="#29528c">  
<?php 
      echo '<b>';  
      echo "Hallo ";  
      echo substr($username, 7);
      echo '<br>';  
      echo "Bitte gib hier die gewünschten Informationen ein.";  
      echo '</b>';  
      echo '<input type="hidden" name="Vusername" value='.$username.'>';  
?>    
 </font>
</font>
<form action="<? echo $_SERVER['PHP_SELF']; ?> " method="post" accept-charset="ISO-8859-1">  
  <table>
   <tr>
      <td> Dienststelle:</td>
      <td>
<?php
    // Stellt den Namen wieder her, wenn ein Fehler auftrat
    if(isset($_POST['Dienststelle']))  
        // htmlentities sichert das Formular gegen Cross-Scripting
        echo "<input type=\"text\" name=\"Dienststelle\" value=\"".htmlentities($_POST['Dienststelle'], ENT_QUOTES)."\">\n";  
    else
        echo "<input type=\"text\" name=\"Dienststelle\">\n";  
        ?></td>
    </tr>
    <tr>
      <td> Telefonnummer:</td>
      <td>
<?php
    // Stellt den Namen wieder her, wenn ein Fehler auftrat
    if(isset($_POST['TelefonnummerM']))  
        // htmlentities sichert das Formular gegen Cross-Scripting
        echo "<input type=\"text\" name=\"TelefonnummerM\" value=\"".htmlentities($_POST['TelefonnummerM'], ENT_QUOTES)."\">\n";  
    else
        echo "<input type=\"text\" name=\"TelefonnummerM\">\n";  
        ?></td>
    </tr> 
    <tr>
      <td> Umstellungsdatum:</td>
      <td>
<?php
    // Stellt den Namen wieder her, wenn ein Fehler auftrat
    if(isset($_POST['Datum']))  
        // htmlentities sichert das Formular gegen Cross-Scripting
        echo "<input type=\"text\" name=\"Datum\" value=\"".htmlentities($_POST['Datum'], ENT_QUOTES)."\">\n";  
    else
        echo "<input type=\"text\" name=\"Datum\">\n";  
        ?></td>
    </tr>
    <tr>
      <td> Rufname:</td>
      <td>
<?php
    // Stellt den Namen wieder her, wenn ein Fehler auftrat
    if(isset($_POST['Rufname']))  
        // htmlentities sichert das Formular gegen Cross-Scripting
        echo "<input type=\"text\" name=\"Rufname\" value=\"".htmlentities($_POST['Rufname'], ENT_QUOTES)."\">\n";  
    else
        echo "<input type=\"text\" name=\"Rufname\">\n";  
        ?></td>
    </tr>
    <tr>
      <td> Vorname:</td>
      <td>
<?php
    // Stellt den Namen wieder her, wenn ein Fehler auftrat
    if(isset($_POST['Vorname']))  
        // htmlentities sichert das Formular gegen Cross-Scripting
        echo "<input type=\"text\" name=\"Vorname\" value=\"".htmlentities($_POST['Vorname'], ENT_QUOTES)."\">\n";  
    else
        echo "<input type=\"text\" name=\"Vorname\">\n";  
        ?></td>
    </tr>
    <tr>
      <td> Nachname:</td>
      <td>
<?php
    // Stellt den Namen wieder her, wenn ein Fehler auftrat
    if(isset($_POST['Nachname']))  
        // htmlentities sichert das Formular gegen Cross-Scripting
        echo "<input type=\"text\" name=\"Nachname\" value=\"".htmlentities($_POST['Nachname'], ENT_QUOTES)."\">\n";  
    else
        echo "<input type=\"text\" name=\"Nachname\">\n";  
        ?></td>
    </tr>
    <tr>
      <td> Email-Adresse:</td>
      <td>
<?php
    // Stellt die Email-Adresse wieder her, wenn ein Fehler auftrat
    if(isset($_POST['Email']))  
        echo "<input type=\"text\" name=\"Email\" value=\"".htmlentities($_POST['Email'], ENT_QUOTES)."\">\n";  
    else
        echo "<input type=\"text\" name=\"Email\">\n";  
        ?></td>
    </tr> 
    <tr>
      <td> Anmeldename:</td>
      <td>
<?php
    // Stellt den Namen wieder her, wenn ein Fehler auftrat
    if(isset($_POST['Anmeldename']))  
        // htmlentities sichert das Formular gegen Cross-Scripting
        echo "<input type=\"text\" name=\"Anmeldename\" value=\"".htmlentities($_POST['Anmeldename'], ENT_QUOTES)."\">\n";  
    else
        echo "<input type=\"text\" name=\"Anmeldename\">\n";  
        ?></td>
    </tr>
    <tr>
      <td> PC-Nr:</td>
      <td>
<?php
    // Stellt den Namen wieder her, wenn ein Fehler auftrat
    if(isset($_POST['PCNr']))  
        // htmlentities sichert das Formular gegen Cross-Scripting
        echo "<input type=\"text\" name=\"PCNr\" value=\"".htmlentities($_POST['PCNr'], ENT_QUOTES)."\">\n";  
    else
        echo "<input type=\"text\" name=\"PCNr\">\n";  
        ?></td>
    </tr>
    <tr>
      <td> Telefonnummer:</td>
      <td>
<?php
    // Stellt den Namen wieder her, wenn ein Fehler auftrat
    if(isset($_POST['Telefon']))  
        // htmlentities sichert das Formular gegen Cross-Scripting
        echo "<input type=\"text\" name=\"Telefon\" value=\"".htmlentities($_POST['Telefon'], ENT_QUOTES)."\">\n";  
    else
        echo "<input type=\"text\" name=\"Telefon\">\n";  
        ?></td>
    </tr>
    <tr>
      <td> Pfad:</td>
      <td>
<?php
    // Stellt den Namen wieder her, wenn ein Fehler auftrat
    if(isset($_POST['Pfad']))  
        // htmlentities sichert das Formular gegen Cross-Scripting
        echo "<input type=\"file\" name=\"Pfad\" value=\"".htmlentities($_POST['Pfad'], ENT_QUOTES)."\">\n";  
    else
        echo "<input type=\"file\" name=\"Pfad\">\n";  
        ?></td>
    </tr>
  </table>
  <input type="submit" name="submit" value="Eintragen">  
</form>
<?php
    }
?>

Vielleicht weiss ja von euch einer wie ich das lösen kann.