PHP & Session, neue Seite öffnen

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Chris213.

    PHP & Session, neue Seite öffnen

    Ich habe eine PHP Datei die Überprüfen soll ob ein User eingeloggt ist (Session). Ich habe nun immer eine neue Seite mit

    PHP-Quellcode

    1. header ("Location: registrieren.php");

    geöffnet, da das aber nicht mit Session funktioniert, wollte ich wissen wie ich das sonst machen, kann. Hab im Internet was mit JS gefunden, das funktioniert aber irgendwie nicht.

    PHP-Quellcode

    1. <script type="text/javascript">
    2. function Zeigen()
    3. {
    4. window.location.href = "login.php?info=Melden Sie sich bitte zuerst ein um diese Seite zu sehen.";
    5. }
    6. <?php
    7. if (!isset ($_SESSION["user_id"]))
    8. {
    9. Zeigen();
    10. }
    11. ?>
    12. </script>

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Chris213“ ()

    Mal wieder hat PHP nichts mit JS zu tun ... und wieso sollte ein Header Redirect nicht mit Sessions funktionieren? du musst lediglich die Session ID auch dem Header hinzufügen, wobei ich fast glaube, dass das eh automatisch geht, die Session Id weiterreichen. Zumindest wenn ich in einem PHP Script eine Session starte und dann via Link OHNE Session ID über GET angegeben auf ein anderne PHP Script navigiere, kann ich die Session trotzdem auslesen, der Browser reicht die nämlich automatisch weiter.
    bei mir kommt dann aber folgender Fehler und wie füg ich dem Header die ID hinzu?

    Warning: Cannot modify header information - headers already sent by (output started at /users/nect/www/Seite/en/management.php:2) in /users/nect/www/Seite/en/includes/checkuser.php on line 4
    Oben ist ja der vom CheckUser. Hier der vom Login.php
    Spoiler anzeigen

    PHP-Quellcode

    1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    2. <html xmlns="http://www.w3.org/1999/xhtml">
    3. <head>
    4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    5. <title>nect - virtual airline</title>
    6. <!--[if ! lte IE 6]><!-->
    7. <link rel="stylesheet" href="../assets/css/navigation.css" type="text/css" charset="utf-8"/>
    8. <link rel="stylesheet" type="text/css" media="screen" href="../assets/css/main.css" />
    9. <!--<![endif]-->
    10. <script src="../js/jquery-1.3.2.min.js" type="text/javascript"></script>
    11. <script src="../js/jquery-ui-1.7.2.spritely.custom.min.js" type="text/javascript"></script>
    12. <script src="../js/jquery.spritely-0.3b.js" type="text/javascript"></script>
    13. <link rel="icon" type="image/ico" href="../favicon.ico" /><link rel="shortcut icon" href="favicon.ico" />
    14. <script type="text/javascript">
    15. (function($)
    16. {
    17. $(document).ready(function()
    18. {
    19. $('#clouds').pan({fps: 30, speed: 0.7, dir: 'left', depth: 10});
    20. window.page = {
    21. hide_panels: function() {
    22. $('.panel').hide(300);
    23. },
    24. show_panel: function(el_id) {
    25. this.hide_panels();
    26. $(el_id).show(300);
    27. }
    28. }
    29. });
    30. })(jQuery);
    31. </script>
    32. </head>
    33. <body>
    34. <ul id="navigation">
    35. <li class="home"><a href="index.php" title="home"></a></li>
    36. <li class="about"><a href="about.html" title="about"></a></li>
    37. <li class="network"><a href="network.html" title="network"></a></li>
    38. <li class="photos"><a href="gallery.html" title="gallery"></a></li>
    39. <li class="community"><a href="community.html" title="community"></a></li>
    40. <li class="contact"><a href="management.html" title="contact"></a></li>
    41. </ul>
    42. <script type="text/javascript">
    43. $(function()
    44. {
    45. $('#navigation a').stop().animate({'marginLeft':'-85px'},1000);
    46. $('#navigation > li').hover(
    47. function ()
    48. {
    49. $('a',$(this)).stop().animate({'marginLeft':'-2px'},200);
    50. },
    51. function ()
    52. {
    53. $('a',$(this)).stop().animate({'marginLeft':'-85px'},200);
    54. }
    55. );
    56. });
    57. </script>
    58. <div id="clouds">
    59. <a href="http://fly-nect.com"><img border="0" src="../assets/images/nect_logo_2010.png" alt="logo"/></a>
    60. </div>
    61. <div id="wrapper">
    62. <?php include 'includes/menu.php'; ?>
    63. <img style="position: relative; left: 550px;" alt="menu right" src="../assets/images/menu_right.png"/>
    64. </div>
    65. <div id="content_box">
    66. <div id="content_inner">
    67. <div id="content_left">
    68. <form action="ausfuehren.php?typ=login" method="post">
    69. <?php
    70. echo $_REQUEST["info"];
    71. ?>
    72. <p>Benutzername:<br><input name="bname" type="text" size="30"></p>
    73. <p>Passwort:<br><input name="pw" type="password" size="30"></p>
    74. <p><input type="submit" name="loggin" value="Anmelden"></p>
    75. </form>
    76. </div>
    77. </div>
    78. </div>
    79. </body>
    80. </html>

    PHP-Quellcode

    1. header ("Location: registrieren.php?sid=".session_id());


    und die Header() Angabe musst du amchen BEVOR du irgendwelche Ausgaben machst, weil dann bereits der Header gesendet wird.

    Beachten Sie, dass Sie die Funktion header() aufrufen müssen, bevor Sie irgendeine andere Art von Ausgabe (seien es normale HTML-Tags, Leerzeilen in einer Datei oder von PHP) zum Client schicken. Es handelt sich hier um einen typischen Fehler, der zum Beispiel auftritt, wenn Sie Code mittels include() oder require() oder einer anderen Dateizugriffs-Funktion einlesen, die Leerzeichen oder Leerzeilen enthalten, die ausgegeben werden, bevor header() aufgerufen wird. Das gleiche Problem kann auch auftreten, wenn Sie eine Datei verwenden, in der HTML und PHP vermischt wurden.

    Quelle: php.net/manual/de/function.header.php

    Um sowas zu testen kann man VOR den header() Befehl einfach ein exit(); schreiben, damit das Script dort beendet wird, anschließend ruft man es im browser auf und schaut sich den Quelltext an ob dort Zeichen sind.