Kleines PM System, geht es auch kürzer?

spikaner

Quereinsteiger @ php
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
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&auml;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">&nbsp;</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
}
?>
nachrichtenberechnung.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:

Philipp9494

Erfahrenes Mitglied
Nunja..

Ich hab mir jetzt nicht alles durchgelesen..
Aber mir fallen so auf die Schnelle diese Tipps ein:
- versuche eigene Funktionen zu verwenden
- verwende Templates. So hast du PHP-Code und HTML getrennt und es wird ein wenig übersichtlicher

MfG
Philipp