News Adminbereich

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • News Adminbereich

    hi!

    ich hab mein newsscript jetzt soweit, dass dort seitenweise die news ausgegeben werden (10 pro seite), ich kann löschen, bearbeiten und hinzufügen...

    jetzt ist es aber folgendermaßen aufgebaut.

    index.php (news werden angezeigt)
    - dort ist ein link der "Admin-Bereich" heißt.
    - wenn ich dort draufklicke komm ich zur nächsten seite

    login.php (user & passwort werden abgefragt)
    - funktioniert soweit ohne probleme
    - bei klick auf "Login" kommt die nächste seite

    admin.php (dort werden zuerst die eingegebenen daten - user & pass mit denen in der mysql datenbank verglichen)
    - wenn sie gleich sind werden die ganzen news nocheinmal angezeigt aber diesmal mit einem "del" und "edit" vermerk
    - wenn es nicht zutrifft kommt eine fehlermeldung

    nun ist das problem, dass die seitenweise newsausgabe nicht funktioniert, weil er ja immer wieder die admin.php aufruft, halt bloß mit "admin.php?start=10", "admin.php?start=20", usw.

    da aber kein direkter zugriff auf die admin.php möglich ist (wegen der user & pass abfrage) werden immer nur die ersten 10 angezeigt und wenn ich auf die nächsten 20 klicke wird der zugriff verweigert.

    was kann man da machen, ohne gleich die reihenfolge vom loginsystem zu ändern?!
  • ich poste am besten die ganze admin.php, sonst könnte ich vielleicht etwas wichtiges übersehn.

    Quellcode

    1. <?php
    2. include("mySQL/login_data.php");
    3. if($_POST[loginname] && $_POST[loginpass])
    4. {
    5. // Verbindung zu MySQL-Datenbank herstellen oder sterben.
    6. @mysql_connect($host,$user,$password)
    7. or die("Abbruch: Verbindung zu '$host'"." konnte nicht hergestellt werden.");
    8. // Benötigte Datenbank auswählen oder sterben.
    9. @mysql_select_db($database)
    10. or die("Abbruch: Datenbank '$database' konnte nicht"." selektiert werden.<br><br>MySQL sagt: ".mysql_error());
    11. $query="SELECT * FROM login WHERE loginnamedb = '$_POST[loginname]' AND loginpassdb = '$_POST[loginpass]'";
    12. $result=mysql_query($query);
    13. $login_array=mysql_fetch_assoc($result);
    14. if (($_POST[loginname] == $login_array['loginnamedb']))
    15. {
    16. if (($_POST[loginpass] == $login_array['loginpassdb']))
    17. {
    18. // Datendefinition für die Clientausgabe
    19. $start = (isset($start)) ? abs((int)$start) : 0;
    20. $limit = 10; // Datensätze pro Ausgabeseite
    21. // Verbindung zu MySQL-Datenbank herstellen oder sterben.
    22. @mysql_connect($host,$user,$password)
    23. or die("Abbruch: Verbindung zu '$host'"." konnte nicht hergestellt werden.");
    24. // Benötigte Datenbank auswählen oder sterben.
    25. @mysql_select_db($database)
    26. or die("Abbruch: Datenbank '$database' konnte nicht"." selektiert werden.<br><br>MySQL sagt: ".mysql_error());
    27. // Feststellen der Anzahl der verfügbaren Datensätze.
    28. $resultID = @mysql_query("SELECT COUNT(newsid) FROM ".$table);
    29. $total = @mysql_result($resultID,0);
    30. // Ggf. $start korrigieren (falls Parameter in
    31. // der URL manipuliert wurde)
    32. $start = ($start >= $total) ? $total - $limit : $start;
    33. // Datenbankabfrage ausführen.
    34. $query = "SELECT newsid, titel, eintrag, link, name, date FROM ".$table." LIMIT ".$start.",".$limit;
    35. $resultID = @mysql_query($query);
    36. if(mysql_numrows($resultID)==0)
    37. {
    38. ?>
    39. <div align="left" class="titel">Keine News vorhanden</div>
    40. <div align="left" class="eintrag">Es wurden keine News in der Datenbank gefunden!</div>
    41. <p>
    42. <?php
    43. }
    44. else
    45. {
    46. // Ergebnisse lesen und an den Client ausgeben
    47. while ($data = mysql_fetch_array($resultID))
    48. {
    49. $newsid=$data["newsid"];
    50. $titel=$data["titel"];
    51. $eintrag=$data["eintrag"];
    52. $link=$data["link"];
    53. $name=$data["name"];
    54. $date=$data["date"];
    55. ?>
    56. <div align="left" class="titel"><?php echo $titel; ?></div>
    57. <div align="left" class="eintrag"><?php echo $eintrag; ?><br>
    58. [<a href="central.php?type=del&newsid=<?php echo $newsid; ?>" target="_self">del</a>]&nbsp;
    59. [<a href="edit.php?newsid=<?php echo $newsid; ?>" target="_self">edit</a>]</div>
    60. <div align="left"><font class="posted">von </font><font class="name"><?php echo $name; ?></font><font class="posted"> am </font><font class="name">
    61. <?php echo substr($date, 8, 2); ?>.<?php echo substr($date, 5, 2); ?>.<?php echo substr($date, 0, 4); ?></font><font class="posted"> um </font><font class="name"><?php echo substr($date, 11, 5); ?></font></div>
    62. <p>
    63. <?php
    64. }
    65. // Zurück- und Vorblättern
    66. if ($start > 0)
    67. {
    68. $newStart = ($start - $limit < 0) ? 0 : ($start-$limit);
    69. echo "<a href=".$_SERVER['PHP_SELF']."?start=".$newStart.">&lt; zurück</a>";
    70. }
    71. if ($start + $limit < $total)
    72. {
    73. $newStart = $start + $limit;
    74. echo " <a href=".$_SERVER['PHP_SELF']."?start=".$newStart.">weiter &gt;</a>";
    75. }
    76. }
    77. }
    78. else
    79. {
    80. ?>
    81. <p>
    82. <div align="center" class="titel">Falsches Login!</div><p>
    83. <div align="center"><form action="javascript:history.back();" method="" name="" onsubmit=""><input type="submit" name="back" value=" Zur&uuml;ck zum Login " class="senden"></form></div>
    84. <?php
    85. }
    86. }
    87. else
    88. {
    89. ?>
    90. <p>
    91. <div align="center" class="titel">Falsches Login!</div><p>
    92. <div align="center"><form action="javascript:history.back();" method="" name="" onsubmit=""><input type="submit" name="back" value=" Zur&uuml;ck zum Login " class="senden"></form></div>
    93. <?php
    94. }
    95. }
    96. ?>
    Alles anzeigen
  • ich denke, dass liegt daran, dass u beim jeden aufruf die per post übergebenen Variablen überprüfst ($_POST[loginname] && $_POST[loginpass])...

    Diese sind aber nur vorhanden, wenn diese zB aus einem Formular an diese Datei übergeben wurden. Wenn du nun auf den Link weiter klickst, sind diese Variablen nicht mehr vorhanden und du müsstest eine Fehlermeldung bekommen bzw. die Meldung, dass du nicht eingelogt bist.

    Versuch dieses mal mit sessions

    Quellcode

    1. <?php
    2. session_start();
    3. if($_POST['loginname'] != '') {
    4. // deine Login Überprüfung...
    5. if(//überprüfung alles true) {
    6. $_SESSION['login_status'] = 1;
    7. }
    8. }
    9. if($_SESSION['login_status'] != 1) {
    10. print('Der zugriff wird dir verweigert oder so...');
    11. } else {
    12. // Die Admin Funktionen
    13. }
    14. ?>
    Alles anzeigen
    Beim Ausloggen würde ich dann $_SESSION['login_status'] = 0 oder einfach die Variable/Session zerstören.
    Lerne nicht Programmiersprachen, lerne Programmieren...

    :D Alles andere ist Syntax :D

    [Blockierte Grafik: http://www.xing.com/img/buttons/10_en_btn.gif]
  • ja soweit, war ich ja mehr oder weniger auch aber ich weiß einfach nicht, wie ich das jetzt machen soll, damit er das nich jedesmal wieder überprüft, es gäbe eine andere möglichkeit, das mit der login abfrage zu machen aber dann müsste ich gleich alles wieder ummodeln :)

    ich bin kein anfänger aber auch kein fortgeschrittener. ich weiß jetzt grad nix mit sessions anzufangen.

    EDIT: ok mal sehn :)
  • da kommt dann bei mir folgende fehlerausgabe (adminbereich wird trotzdem darunter ausgegeben)


    Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /srv/www/htdocs/web434/html/versuch1/admin.php:10) in /srv/www/htdocs/web434/html/versuch1/admin.php on line 14

    Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /srv/www/htdocs/web434/html/versuch1/admin.php:10) in /srv/www/htdocs/web434/html/versuch1/admin.php on line 14
  • lol...das solltest du auch nicht ernst nehmen...

    das in der Zeile 14 session_start(); steht, war mir klar... und in den Zeilen davor?

    http://de.php.net/manual/de/function.session-start.php
    Anmerkung: Bei Verwendung Cookie-basierter Sessions müssen Sie session_start() aufrufen, bevor irgend etwas an den Browser geschickt wird.
    Lerne nicht Programmiersprachen, lerne Programmieren...

    :D Alles andere ist Syntax :D

    [Blockierte Grafik: http://www.xing.com/img/buttons/10_en_btn.gif]
  • ich hätte gerne alles, was davor ist...so schwer ist das doch net...

    ansonsten...mach einfach folgendes in die erste Zeile, da du es ja nicht schaffst, hier alles zu posten:

    Quellcode

    1. <?php session_start(); ?>


    und nochmals:
    http://de.php.net/manual/de/function.session-start.php
    Anmerkung: Bei Verwendung Cookie-basierter Sessions müssen Sie session_start() aufrufen, bevor irgend etwas an den Browser geschickt wird.
    Lerne nicht Programmiersprachen, lerne Programmieren...

    :D Alles andere ist Syntax :D

    [Blockierte Grafik: http://www.xing.com/img/buttons/10_en_btn.gif]
  • http://de.php.net/manual/de/function.session-start.php
    Anmerkung: Bei Verwendung Cookie-basierter Sessions müssen Sie session_start() aufrufen, bevor irgend etwas an den Browser geschickt wird.


    Verstehst du das???

    BEVOR IRGEND ETWAS AN DEN BROWSER GESCHICKT WIRD...

    HTML Code wird auch an den Browser geschickt

    kein anfänger und auch kein fortgeschrittener...ich glaub, du bist noch weiter unter dem anfänger
    Lerne nicht Programmiersprachen, lerne Programmieren...

    :D Alles andere ist Syntax :D

    [Blockierte Grafik: http://www.xing.com/img/buttons/10_en_btn.gif]
  • "eLKane" schrieb:

    kein anfänger und auch kein fortgeschrittener...ich glaub, du bist noch weiter unter dem anfänger


    dieser tonfall ist unangemessen. das muss man ja nicht wissen, dass der html-code schon als "an den browser gesendet" gilt. man könnte ja auch denken, dass erst, nachdem die komplette html-seite steht, das ganze als "gesendet" gilt.

    aber in der tat ist das in diesem script der fehler: aber wie kann man das umgehen?

    entweder: die session wird erstellt, noch bevor irgendwelcher html code oder so ausgegeben ist.

    öfters mal ist sowas nicht möglich. dann muss man mit ausgabepuffern arbeiten. dadurch wird die bisherige ausgabe zwischengespeichert und erst später versendet.

    Siehe dazu folgendes Kapitel im PHP Manual:
    http://de.php.net/manual/de/ref.outcontrol.php

    ich würde also den quelltext so beginnen:

    Quellcode

    1. <?php
    2. ob_start();
    3. ob_get_contents();
    4. [...]


    und so beenden:

    Quellcode

    1. <?php
    2. ob_end_flush();
    3. ob_end_clean();
    4. ?>