Benutzeranzeige / Datenbearbeitung

Gesperrt
jph
Beiträge: 61
Registriert: So 13. Feb 2005, 18:57
Kontaktdaten:

Benutzeranzeige / Datenbearbeitung

Beitrag von jph » So 27. Feb 2005, 15:31

Hallo,

dieses Modul hat folgende Funktionen:
- es werden die im Contenido-System angelegten Benutzer in Form einer mehrseitigen Liste angezeigt. Inklusive Daten über Adresse email etc.
- Der Benutzer kann, wenn sich das Modul in einer geschützten Kategorie befindet (also nach eingabe seines logins) seine eigenen Daten verändern und wieder speichern.
Das ganze geht natürlich auch über das Backend. Allerdings ist es, wenn man nur dieses Zweck nutzen möchte viel leichter für die Benutzer die Daten direkt auf der Website ändern zu können
- eMail-Adresse wird syntaktisch überprüft
- andere Angaben werden überprüft, ob eingegebn

Code: Alles auswählen

<?php 
/******************************************
 * Benutzeranzeige
 * von Jan P. Heck 
 * post@janheck.de
 * www.janheck.de
 * die im Contenido angelegten Benutzer werden in Form 
 * einer Liste angezeigt. Desweiteren hat jeder Benutzer die Möglichkeit, 
 * seine eigenen Daten (Adresse, Telefon etc.) zu bearbeiten
 * Dies funktioniert natürlich nur, wenn dieses Modul in einer
 * geschützten Kategorie benutzt wird, da sonst nicht festgestellt werden
 * kann welcher Benutzer da ist. 
 *******************************************/
/**
 * Datenbank-Objekt
 */
$dbConnect = new DB_Contenido;

/**
 * Anzahl der Benutzer, die pro Seite angezeigt werden
 */
$proSeite = 25;

/**
 * Darf der Benutzer seinen eigenen Eintrag ändern?
 * Dies geht nur, wenn das Modul in einem geschützten Bereich verwendet wird.
 * true -> darf ändern
 * false ->es gibt nur eine Anzeige, eine änderung der Daten ist nur im Backend möglich
 */
$DARFAENDERN = true;

//--------------Methoden------------------------------//

function checkMail($email) // Checkt, ob Emails gültig sind
{
  $nonascii      = "\x80-\xff"; # Non-ASCII-Chars are not allowed

  $nqtext        = "[^\\\\$nonascii\015\012\"]";
  $qchar         = "\\\\[^$nonascii]";

  $protocol      = '(?:mailto:)';

  $normuser      = '[a-zA-Z0-9][a-zA-Z0-9_.-]*';
  $quotedstring  = "\"(?:$nqtext|$qchar)+\"";
  $user_part     = "(?:$normuser|$quotedstring)";

  $dom_mainpart  = '[a-zA-Z0-9][a-zA-Z0-9._-]*\\.';
  $dom_subpart   = '(?:[a-zA-Z0-9][a-zA-Z0-9._-]*\\.)*';
  $dom_tldpart   = '[a-zA-Z]{2,5}';
  $domain_part   = "$dom_subpart$dom_mainpart$dom_tldpart";

  $regex         = "$protocol?$user_part\@$domain_part";


  return preg_match("/^$regex$/",$email);
}

//--------------Methoden Ende------------------------------//
if($_REQUEST['benutzerAction']=="edit" && $DARFAENDERN)
{
    //Benutzer möchte seinen eigenen Eintrag editieren
    echo "<h2>Eigenen Eintrag editieren</h2>";
    if(isset($_REQUEST['submit']))
    {
        $erEingabe = false;
        if(!checkMail($_REQUEST[email]) && $_REQUEST['email']!="")
        {
            echo "Die angegebene eMail-Adresse ist ung&uuml;ltig.<br />";
            $errEingabe = true;
        }
        if($_REQUEST['realname']=="")
        {
            echo "Geben Sie bitte einen Namen an.<br />";
            $errEingabe = true;
        }
        if($_REQUEST['address_street']=="")
        {
            echo "Geben Sie bitte eine Straße an.<br />";
            $errEingabe = true;
        }
        if($_REQUEST['address_zip']=="")
        {
            echo "Geben Sie bitte eine Postleitzahl an.<br />";
            $errEingabe = true;
        }
        if($_REQUEST['address_city']=="")
        {
            echo "Geben Sie bitte einen Ort an.<br />";
            $errEingabe = true;
        }
        
        if($errEingabe)
        {
            echo "Bitte korrigieren Sie Ihre Eingaben.<br />";
        }
        else
        {
            //speichern in der Datenbank
            $query = "UPDATE ".$cfg['tab']['phplib_auth_user_md5']." set realname ='".$_REQUEST['realname']."', email ='".$_REQUEST['email']."', address_street ='".$_REQUEST['address_street']."', address_zip ='".$_REQUEST['address_zip']."',address_city ='".$_REQUEST['address_city']."', address_country ='".$_REQUEST['address_country']."',telephone='".$_REQUEST['telephone']."' where user_id='".$auth->auth["uid"]."'";
    
            if($dbConnect->query($query))
            {
                echo "Ihre Daten wurden gespeichert.<br />" .
                        "<a href=\"".$_SERVER['REQUEST_URI']."&benutzerAction=\">Zur&uuml;ck zur Liste</a>";
            } 
            else
            {
                echo "Fehler beim Speichern der Daten.<br />";
                echo $query;
            }
        }
        
    }   
    else
    {
        $query="SELECT * from ".$cfg['tab']['phplib_auth_user_md5']." where user_id='".$auth->auth["uid"]."'";
        $dbConnect -> query($query);
        if($dbConnect->next_record())
        {
            echo "<form name=\"benutzerDatenAendern\" action=\"/cms/front_content.php?idcat=12&lang=1&client=1&benutzerAction=edit\" method=\"POST\">";
            echo "<table border =\"0\" cellpadding=\"0\" cellspacing=\"2\" width =\"50%\">
                <tr><td>Name</td><td><input type=\"text\" name=\"realname\" id=\"realname\" value=\"".$dbConnect->f("realname")."\" /></td>
                </tr>
                <tr><td>eMail</td><td><input type=\"text\" name=\"email\" id=\"email\" value=\"".$dbConnect->f("email")."\" /></td>
                </tr>
                <tr><td>Straße</td><td><input type=\"text\" name=\"address_street\" id=\"address_street\" value=\"".$dbConnect->f("address_street")."\" /></td>
                </tr>       
                <tr><td>PLZ</td><td><input type=\"text\" name=\"address_zip\" id=\"address_zip\" value=\"".$dbConnect->f("address_zip")."\" /></td>
                </tr><tr><td>Ort</td><td><input type=\"text\" name=\"address_city\" id=\"address_city\" value=\"".$dbConnect->f("address_city")."\" /></td>
                </tr><tr><td>Land</td><td><input type=\"text\" name=\"address_country\" id=\"address_country\" value=\"".$dbConnect->f("address_country")."\" /></td>
                </tr>
<tr><td>Telefon: </td><td><input type=\"text\" name=\"telephone\" id=\"telephone\" value=\"".$dbConnect->f("telephone")."\" /></td>
                </tr>
<tr> <td colspan=\"2\"><input type=\"submit\"  name=\"submit\"     id=\"submit\" value=\"Speichern\" />
                        
                        </table>";
        }
        else
        {
            echo "Sie haben eine ungültige Benutzer-ID";
        }
    }

}
else
{
    if($_GET['start']=="" || !is_numeric($_GET['start']) ||  $_GET['start']<0)
    {   
        $start = 0;
    }
    else
    {
        $start =$_GET['start'];
    }
    if($_REQUEST['buchstabe']!="")
    {
        $where=" where realname LIKE '".$_REQUEST['buchstabe']."%' ";
    }
    
    $query="SELECT * from ".$cfg['tab']['phplib_auth_user_md5']." $where order by realname limit $start, $proSeite";
    $dbConnect->query($query);
    if($DARFAENDERN)
    {
        echo "<a href=\"/cms/front_content.php?idcat=12&lang=1&client=1&benutzerAction=edit\"> Eigenen Eintrag bearbeiten</a><br />";
    }
    while ($dbConnect->next_record()) {
    
    echo "
    <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"border:1px solid black;width:90%;\">
        <tr>
            <td style=\"border-bottom: 1px solid red; font-weight:bold;padding:2px;text-align:center;\">".$dbConnect->f("realname")."</td>
        </tr>
        <tr>
            <td>".$dbConnect->f("address_street")."<br />".$dbConnect->f("address_zip")." ".$dbConnect->f("address_city");
            if($dbConnect->f("address_country")!="")
            {
                echo ", ".$dbConnect->f("address_country")."<br />";
            }
            if($dbConnect->f("telephone")!="")
            {
                echo "Tel.: ".$dbConnect->f("telephone")."<br />";
            }
            
            if(checkMail($dbConnect->f("email")))
            {
                echo "<a href=\"mailto:".$dbConnect->f("email")."\" title=\"Mail an ".$dbConnect->f("realname")."\">".$dbConnect->f("email")."</a>";
            }
        echo "<td></tr>
    </table>
    <br />
    
    ";
    } 
    echo "</table>";
    $query="SELECT Count(*) as anzahl from ".$cfg['tab']['phplib_auth_user_md5']." $where";
    $dbConnect->query($query);
    $dbConnect->next_record();
    $count = $dbConnect->f("anzahl");
    echo "<table border=\"0\" style=\"width:90%;\">
    <tr><td align=\"right\" width=\"30%\">";
    if($start>0)
    {
        $newstart = $start-$proSeite;
        echo "<a href=\"/cms/front_content.php?idcat=12&lang=1&client=1&start=$newstart&buchstabe=".$_REQUEST['buchstabe']."\">Seite zur&uuml;ck</a>";
    }
    echo "</td>
    <td align=\"center\"  width=\"30%\">
    <select name=\"buchstabe\" id=\"buchstabe\" onChange=\"window.location=('".$_SERVER['REQUEST_URI']."&buchstabe='+this.options[this.selectedIndex].value)\" >
        <option value=\"\"></option>";
    for ($i=97;$i<123;$i++)
    {
        echo "<option value=\"".strtoupper(chr($i))."\" "; if($_REQUEST['buchstabe'] == strtoupper(chr($i))) {echo " selected ";}echo ">".strtoupper(chr($i))."</option>\n";
    }
    
    echo "</select>
    </td>
    <td align=\"right\" width=\"30%\">";
    if($start+$proSeite < $count)
    {
        $newstart = $start+$proSeite;
        echo "<a href=\"/cms/front_content.php?idcat=12&lang=1&client=1&start=$newstart&buchstabe=".$_REQUEST['buchstabe']."\">Seite vor </a></td>";
    }
    echo "</table>";
    
}
?>

Viel Spass damit
Zuletzt geändert von jph am Sa 5. Mär 2005, 18:25, insgesamt 1-mal geändert.
www.janheck.de
Config (lokal): Contenido 4.4.5
Apache/2.0.50 (Unix) mod_perl/1.99_13 Perl/v5.8.4 mod_ssl/2.0.50 OpenSSL/0.9.7d PHP/5.0.0 DAV/2 on SUSE 9.2

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Mo 28. Feb 2005, 13:12

nettes modul... ;-)
anmerkung gilt ebenso hier...
-> http://www.contenido.org/forum/viewtopi ... 2688#42688
*** make your own tools (wishlist :: thx)

jph
Beiträge: 61
Registriert: So 13. Feb 2005, 18:57
Kontaktdaten:

Beitrag von jph » Sa 5. Mär 2005, 18:26

habe gerade den Quellcode oben erneuert, also neue Funktion ist hinzugekommen, dass am Ende der Seite jetzt eine Select-Liste mit Buchstaben angezeigt wird. Wählt man einen Buchstaben aus, dann werden nur die Benutzer mit dem Anfangsbuchstaben angezeigt.
www.janheck.de
Config (lokal): Contenido 4.4.5
Apache/2.0.50 (Unix) mod_perl/1.99_13 Perl/v5.8.4 mod_ssl/2.0.50 OpenSSL/0.9.7d PHP/5.0.0 DAV/2 on SUSE 9.2

Gesperrt