Also, ich habe ein kleines PM geschrieben und finde es etwas "gebläht" meine Frage kann man es auch kürzer lösen?
und ist es auch sicher genug ?
hier mal der Code
nachrichten.php
nachrichtenberechnung.php
würde mich über Hilfe / anregungen freuen.
mfg Spikaner
edit: hier noch die dazugehörige sql
und ist es auch sicher genug ?
hier mal der Code
nachrichten.php
PHP:
<?php
include("logedin.php"); //Prüfung ob User angemeldet
include("nachrichtenberechnung.php");
// Prüfen auf neue nachrichten oder ob senden etc ausgewählt..
If (isset ($_GET['pm']))
{
If ($pm == "schreiben")
{
if(isset($_POST['suchen']))
{
// so hier noch die jungs sauber mit link ausgeben....
?>
<div style="width:900px; height:500px; overflow:none; z-index: 4; left: 0px; top: 0px;">
<table border="0" width="896" >
<tr>
<td width="160">User:</td>
<td>Nachricht senden:</td>
</tr>
<?php
$a = count($datensatz) - 1;
for($b=0; $b <= $a; $b++)
{
echo '<tr>';
echo '<td width="160">';
echo $datensatz[$b][1];
echo '<td width="125">';
echo '<a href="index.php?ac=nachrichten&pm=schreiben&empfaenger='.$datensatz[$b][1].'">auswählen</a>';
echo '</tr>';
}
?>
</table>
</div>
<?php
}
else
{
?>
<div style="width:900px; height:500px; overflow:none; z-index: 4; left: 0px; top: 0px;">
<table border="0" width="896" cellspacing="0" height="500">
<tr>
<td>
<form method="POST" action="<?php $_SERVER['PHP_SELF'] ?>">
<p align="center"><br>
<u><b><font size="4">Neu Nachricht:</font></b></u></p>
<p>Empfänger:
<?php
If (isset($_GET['empfaenger']))
{
?>
<input type="text" name="empfaenger" size="20" value="<?php echo $_GET['empfaenger'];?>">
</p>
<?php
}
else
{
?>
<input type="text" name="empfaenger" size="20">
</p>
<?php
}
?>
<p>
<input type="submit" value="User suchen" name="suchen">
</p>
<p> Betreff:
<input type="text" name="betreff" size="90">
</p>
<p>
<textarea name="nachricht" cols="100" rows="8"></textarea>
</p>
<p align="center">
<input type="submit" value="Absenden" name="absenden">
<input type="reset" value="Zurücksetzen" name="B2">
</p>
</form>
</td>
</tr>
</table>
</div>
<?php
}
}
elseif ($pm == "anzeigen")
{
?>
<div style="width:900px; height:500px; overflow:none; z-index: 4; left: 0px; top: 0px;">
<table border="1" width="896" height="500">
<tr>
<td height="30" width="448">
<p align="center"><a href="index.php?ac=nachrichten">zurück</a></td>
<td height="30" width="448">
<p align="center"><a href="index.php?ac=nachrichten&pm=loeschen&id=<?php echo $_GET['id'];?>">
Nachricht löschen</a></td>
</tr>
<tr>
<td height="20" width="448">
<?php
echo "Von: ";
echo $result2['Nickname'];
echo '</td>';
echo '<td height="20" width="448">';
$datum=date("d.m.Y - H:i",$nachricht['timestamp']);
echo "Datum: ";
echo $datum;
echo '</td>';
echo '</tr><tr>';
echo '<td colspan="2" height="20" width="896">';
echo "Betreff: ";
echo $nachricht['betreff'];
echo '</td>';
echo '</tr><tr>';
echo '<td colspan="2" valign="top" height="430" width="896">';
echo $nachricht['nachricht'];
?>
</td>
</tr>
</table>
</div>
<?php
}
elseif ($pm == "verwalten")
{
?>
<div style="width:900px; height:500px; overflow:none; z-index: 4; left: 0px; top: 0px;">
<table border="0" width="896" height="500">
<tr>
<td height="30" width="448">
<p align="center"><a href="index.php?ac=nachrichten&pm=schreiben">Neue Nachricht</a></td>
<td height="30" width="448">
<p align="center"><a href="index.php?ac=nachrichten&pm=verwalten">Gelesenen Nachrichten verwalten</a></td>
</tr>
<tr>
<td colspan="2" height="470" width="896">
<div style="width:896px; height:500px; overflow:auto; z-index: 4; left: 0px; top: 0px;">
<table border="1" width="870" cellspacing="0" cellpadding="0">
<tr>
<td width="30"> </td>
<td width="130">Von:</td>
<td width="125">Datum:</td>
<td width="585">Betreff:</td>
</tr>
<form method="POST" action="<?php $_SERVER['PHP_SELF'] ?>">
<?php
$y = count($nachricht) - 1;
for($z=0; $z <= $y; $z++)
{
echo '<tr>';
echo '<td width="30">';
echo '<input type="checkbox" name="del['.$z.']" value="'.$nachricht[$z][0].'">';
echo '<td width="130">';
echo $nachricht[$z][1];
echo '<td width="125">';
$datum=date("d.m.Y H:i",$nachricht[$z][2]);
echo $datum;
echo '<td width="585">';
echo '<a href="index.php?ac=nachrichten&pm=anzeigen&id='.$nachricht[$z][0].'">'.$nachricht[$z][3].'</a>';
echo '</tr>';
}
?>
<tr><td colspan="4" width="870">
<input type="submit" value="Löschen" name="loeschen"><input type="reset" value="Zurücksetzen" name="B2">
</form>
</td></tr>
</table>
</div>
</td>
</tr>
</table>
</div>
<?php
}
else
{
?>
<div style="width:900px; height:500px; overflow:none; z-index: 4; left: 0px; top: 0px;">
<table border="0" width="896" height="500">
<tr>
<td height="30" width="448">
<p align="center"><a href="index.php?ac=nachrichten&pm=schreiben">Neue Nachricht</a></td>
<td height="30" width="448">
<p align="center"><a href="index.php?ac=nachrichten&pm=verwalten">Gelesenen Nachrichten verwalten</a></td>
</tr>
<tr>
<td colspan="2" height="470" width="896">
<div style="width:896px; height:500px; overflow:auto; z-index: 4; left: 0px; top: 0px;">
<table border="1" width="870" cellspacing="0" cellpadding="0">
<tr>
<td width="160">Von:</td>
<td width="125">Datum:</td>
<td width="585">Betreff:</td>
</tr>
<?php
IF (isset ($nachricht))
{
$y = count($nachricht) - 1;
for($z=0; $z <= $y; $z++)
{
echo '<tr>';
echo '<td width="160">';
echo $nachricht[$z][1];
echo '<td width="125">';
$datum=date("d.m.Y H:i",$nachricht[$z][2]);
echo $datum;
echo '<td width="585">';
echo '<a href="index.php?ac=nachrichten&pm=anzeigen&id='.$nachricht[$z][0].'">'.$nachricht[$z][3].'</a>';
echo '</tr>';
}
}
else
{
echo '<tr>';
echo '<td colspan="3" height="200" width="896">';
echo "Keine neue Nachricht vorhanden.";
echo '</tr>';
}
?>
</table>
</div>
</td>
</tr>
</table>
</div>
<?php
}
}
else
{
?>
<div style="width:900px; height:500px; overflow:none; z-index: 4; left: 0px; top: 0px;">
<table border="0" width="896" height="500">
<tr>
<td height="30" width="448">
<p align="center"><a href="index.php?ac=nachrichten&pm=schreiben">Neue Nachricht</a></td>
<td height="30" width="448">
<p align="center"><a href="index.php?ac=nachrichten&pm=verwalten">Gelesenen Nachrichten verwalten</a></td>
</tr>
<tr>
<td colspan="2" height="470" width="896">
<div style="width:896px; height:500px; overflow:auto; z-index: 4; left: 0px; top: 0px;">
<table border="1" width="870" cellspacing="0" cellpadding="0">
<tr>
<td width="160">Von:</td>
<td width="125">Datum:</td>
<td width="585">Betreff:</td>
</tr>
<?php
IF (isset ($nachricht))
{
$y = count($nachricht) - 1;
for($z=0; $z <= $y; $z++)
{
echo '<tr>';
echo '<td width="160">';
echo $nachricht[$z][1];
echo '<td width="125">';
$datum=date("d.m.Y H:i",$nachricht[$z][2]);
echo $datum;
echo '<td width="585">';
echo '<a href="index.php?ac=nachrichten&pm=anzeigen&id='.$nachricht[$z][0].'">'.$nachricht[$z][3].'</a>';
echo '</tr>';
}
}
else
{
echo '<tr>';
echo '<td colspan="3" height="200" width="896">';
echo "Keine neue Nachricht vorhanden.";
echo '</tr>';
}
?>
</table>
</div>
</td>
</tr>
</table>
</div>
<?php
}
?>
PHP:
<?php
// ist pm gesetzt
If (isset ($_GET['pm']))
{
$pm = htmlspecialchars($_GET['pm']);
// nachricht schreiben verarbeiten
If ($pm == "schreiben")
{
if(isset($_POST['suchen']))
{
$sucheuser = htmlspecialchars($_POST['empfaenger']);
$sucheuser = strtolower($sucheuser);
while (strlen($sucheuser) > '3')
{
$suchstring = "SELECT Id,Nickname FROM benutzerdaten WHERE lower(Nickname) LIKE '%".$sucheuser."%'";
$result =mysql_query($suchstring);
$anzahl=mysql_num_rows($result);
If ($anzahl == "0")
{
$sucheuser = substr($sucheuser, 1, -1);
}
else
{
$i=0;
while($datensat=mysql_fetch_array($result))
{
$datensatz[$i][0] = $datensat['Id'];
$datensatz[$i][1] = $datensat['Nickname'];
$i++;
}
$datensatz=mysql_fetch_array($result);
break;
}
}
// Hier noch Prüfen ob ein User gefunden -> Ausgabe,ansonsten -> Fehlermeldung
if(!isset($datensatz[0][0]))
{
$fehlertext = "Keinen passenden User gefunden..";
$zurueckbutton = "./index.php?ac=nachrichten&pm=schreiben";
include("error.php");
die;
}
}
if(isset($_POST['absenden']))
{
$empf = mysql_real_escape_string($_POST['empfaenger']);
$query = ("SELECT Id FROM benutzerdaten WHERE lower(Nickname) = '".strtolower($empf)."'");
$result = mysql_query($query);
if(!($row = mysql_fetch_assoc($result)))
{
$fehlertext = "Username existiert nicht";
$zurueckbutton = "./index.php?ac=nachrichten&pm=schreiben";
include("error.php");
die;
}
else
{
$time = time();
$idsender = $_SESSION["user_id"];
$idempfaenger = $row['Id'];
$betreff = mysql_real_escape_string($_POST["betreff"]);
if(!eregi("^[a-zA-Z0-9_äöüÄÖÜ,.:;=?! -]+$",$_POST["betreff"]))
{
$fehlertext = "Bestimmte Sonderzeichen sind im Betreff nicht erlaubt genauere Informationen stehen im FAQ.";
$zurueckbutton = "./index.php?ac=nachrichten&pm=schreiben";
include("error.php");
die;
}
$nachricht = $_POST['nachricht'];
$nachricht = mysql_real_escape_string($nachricht);
$nachricht = strip_tags($nachricht);
$sql_query_string10 = "
INSERT INTO nachrichten (senderid,empfid,timestamp,gelesen,betreff,nachricht) VALUES ('".$idsender."','".$idempfaenger."','".$time."','0','".$betreff."','".$nachricht."')";
mysql_query($sql_query_string10) or die('query fehlgeschlagen');
$fehlertext = "Nachricht erfolgreich gesendet.";
$zurueckbutton = "./index.php?ac=nachrichten";
include("error.php");
die;
}
}
}
// Nachrichtenanzeige
If ($pm == "anzeigen")
{
$id = htmlspecialchars($_GET['id']);
$sql_query_string = "SELECT senderid,empfid,timestamp,betreff,nachricht FROM nachrichten WHERE id like'".$id."'";
$result = mysql_query($sql_query_string);
$nachricht = mysql_fetch_array($result);
If ($nachricht["empfid"] == $_SESSION['user_id'])
{
$query_string = "SELECT Nickname FROM benutzerdaten WHERE Id like '".$nachricht["senderid"]."'";
$result1 = mysql_query($query_string);
$result2 = mysql_fetch_array($result1);
$sql_query_string1 = "UPDATE nachrichten SET gelesen = '1' WHERE id = '".$id."'";
mysql_query($sql_query_string1) or die('query fehlgeschlagen');
}
else
{
$fehlertext = "Du hasst eben versucht eine Nachricht eines anderen Users aufzurufen !!.";
$zurueckbutton = "./index.php?ac=nachrichten";
include("error.php");
die;
}
}
// Verwaltung
IF ($pm == "loeschen")
{
$id = htmlspecialchars($_GET['id']);
$sql_query_string = "SELECT empfid FROM nachrichten WHERE id like'".$id."'";
$result = mysql_query($sql_query_string);
$nachricht = mysql_fetch_array($result);
If ($nachricht["empfid"] == $_SESSION['user_id'])
{
$sql = "DELETE FROM nachrichten WHERE id= '".$id."'" ;
mysql_query($sql);
$fehlertext = "Nachricht erfolgreich gelöscht.";
$zurueckbutton = "./index.php?ac=nachrichten";
include("error.php");
die;
}
else
{
$fehlertext = "Du hasst eben versucht eine Nachricht eines anderen Users aufzurufen !!.";
$zurueckbutton = "./index.php?ac=nachrichten";
include("error.php");
die;
}
}
IF ($pm == "verwalten")
{
IF (!isset ($_POST['loeschen']))
{
$sql_query_string = "SELECT id,senderid,timestamp,betreff FROM nachrichten WHERE empfid like'".$_SESSION["user_id"]."' AND gelesen like'1'";
$ergebnis = mysql_query($sql_query_string);
$i=0;
while($nachrich=mysql_fetch_array($ergebnis))
{
$query_string = "SELECT Nickname FROM benutzerdaten WHERE Id like '".$nachrich["senderid"]."'";
$result = mysql_query($query_string);
$result1=mysql_fetch_array($result);
$nachricht[$i][0] = $nachrich['id'];
$nachricht[$i][1] = $result1['Nickname'];
$nachricht[$i][2] = $nachrich['timestamp'];
$nachricht[$i][3] = $nachrich['betreff'];
$i++;
}
}
IF (isset ($_POST['loeschen']))
{
foreach($_POST['del'] as $box)
{
$sql = "DELETE FROM nachrichten WHERE id= '".$box."'" ;
mysql_query($sql);
}
$sql_query_string = "SELECT id,senderid,timestamp,betreff FROM nachrichten WHERE empfid like'".$_SESSION["user_id"]."' AND gelesen like'1'";
$ergebnis = mysql_query($sql_query_string);
$i=0;
while($nachrich=mysql_fetch_array($ergebnis))
{
$query_string = "SELECT Nickname FROM benutzerdaten WHERE Id like '".$nachrich["senderid"]."'";
$result = mysql_query($query_string);
$result1=mysql_fetch_array($result);
$nachricht[$i][0] = $nachrich['id'];
$nachricht[$i][1] = $result1['Nickname'];
$nachricht[$i][2] = $nachrich['timestamp'];
$nachricht[$i][3] = $nachrich['betreff'];
$i++;
}
}
}
}
else
{
$sql_query_string = "SELECT id,senderid,timestamp,betreff FROM nachrichten WHERE empfid like'".$_SESSION["user_id"]."' AND gelesen like'0'";
$ergebnis = mysql_query($sql_query_string);
$i=0;
while($nachrich=mysql_fetch_array($ergebnis))
{
$query_string = "SELECT Nickname FROM benutzerdaten WHERE Id like '".$nachrich["senderid"]."'";
$result = mysql_query($query_string);
$result1=mysql_fetch_array($result);
$nachricht[$i][0] = $nachrich['id'];
$nachricht[$i][1] = $result1['Nickname'];
$nachricht[$i][2] = $nachrich['timestamp'];
$nachricht[$i][3] = $nachrich['betreff'];
$i++;
}
}
?>
würde mich über Hilfe / anregungen freuen.
mfg Spikaner
edit: hier noch die dazugehörige sql
SQL:
CREATE TABLE IF NOT EXISTS `nachrichten` (
`id` int(11) NOT NULL auto_increment,
`senderid` decimal(9,0) NOT NULL,
`empfid` decimal(9,0) NOT NULL,
`timestamp` decimal(15,0) NOT NULL,
`gelesen` decimal(1,0) NOT NULL default '0',
`betreff` varchar(50) collate utf8_bin NOT NULL,
`nachricht` varchar(750) collate utf8_bin NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=23 ;
Zuletzt bearbeitet: