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ü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ü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ü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