User zum Einloggen "zwingen"

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

  • User zum Einloggen "zwingen"

    Moin Moin,

    Ich spiele mal den Aushilfspausenclown für unseren Webprogrammmer der sich unangekündigt eine Auszeit genommen hat und muss mich daher
    auch um die wesentlichen Dinge unserer Website (in der Entstehung) kümmern.
    Hierbei bin ich auf ein grundlegendes Problem gestoßen -

    die User müssen sich auf der Website einloggen um ihre Passwörter und E-Mail Adresse zu ändern, jedoch nicht um zu donaten/voten. (Donate / Vote Funktion als Bestandteil eines Games).
    Nach langem hin und her bin ich auf eine Möglichkeit gestoßen, die dann kurzum die gesamte Donate.php in die Tonne geknüppelt hat. - Ctrl + Y und wiederhergestellt.
    Bevor ich also nochmehr an der Website schrotte, wollte ich da mal lieber etwas fachkundigere Augen drüber huschen lassen.

    Kurzum möchte ich, dass die User, wenn sie die Donation.php über egal welchen Link (2 ins. an jeweils unterschiedlichen Positionen) anlaufen, und dabei nicht eingeloggt sind, diese Page nicht öffnen können.
    Das geht damit einher, dass wir die Donation/Voting Angelegenheit mit unserer Datenbank verknüpfen wollen/müssen, damit der Pingback und Trace wer was getan hat, ordentlich funktioniert.


    Da ich mal davon ausgehe, dass ihr die Login.php und die Donation.php braucht um das Problem näher zu betrachten, tackere ich diese einfach mal anbei:

    Login.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" xmlns:fb="http://ogp.me/ns/fb#">
    3. <head>
    4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    5. <title><?php require('include/title.php'); ?></title>
    6. <link href="Content/css/global2ae6.css" rel="stylesheet" type="text/css" />
    7. <link href="Content/theme/themef796.css" rel="stylesheet" type="text/css" />
    8. <script src="Scripts/jquery.min.js" type="text/javascript"></script>
    9. <script src="Scripts/global6d93.js" type="text/javascript"></script>
    10. <script src="Content/theme/rustyle.css" rel="stylesheet" type="text/css" />
    11. <script type="text/javascript" src="../www.n.com/RULC/Home/SignOnJS52b3html.html?.r=1039038721"></script>
    12. <script type="text/javascript"> checkLogIn(false); </script></head>
    13. <body>
    14. <div id="topWrap">
    15. <div id="topNav">
    16. <div id="topNavSiteInfo">
    17. <h1>Noxen RoM</h1>
    18. </div>
    19. <?php require('include/upside.php'); ?>
    20. </div>
    21. <div id="mainWrap">
    22. <div id="mainBox" class="clear">
    23. <div id="side">
    24. <div id="sideTop">
    25. <div class="title">Status And Time</div>
    26. <div class="status offline"></div>
    27. <div id="serverTime">
    28. <script type="text/javascript">clock()</script>
    29. </div>
    30. </div>
    31. <?php require('include/left_menu.php'); ?>
    32. <div id="main">
    33. <div class="topBanner"><?php require('include/slider.php'); ?></div>
    34. <div class="title logIn"></div>
    35. <div class="formWrap">
    36. <div class="message"></div>
    37. <div class="formGroup">
    38. <?php
    39. if(isset($_SESSION["username"]))
    40. {
    41. ?>
    42. <script type="text/javascript">
    43. setTimeout("location.href='home.php'",100);
    44. </script>
    45. <?php
    46. }
    47. include 'include/config.php';
    48. include 'include/functions.php';
    49. If (isset($_POST["username"]))
    50. {
    51. if (empty($_POST['username']) OR empty($_POST['password']))
    52. {
    53. echo "Error! One or more fields are empty. You'll be redirected in 5 seconds... Or click ";
    54. ?>
    55. <a href="login.php">here.</a>
    56. <script type="text/javascript">
    57. setTimeout("location.href='login.php'",5000);
    58. </script>
    59. <?php
    60. die;
    61. }
    62. $conn = new mysqli($ip,$sqluser,$sqlpw,$userdb);
    63. if (mysqli_connect_errno() == 0)
    64. {
    65. $user = $conn->real_escape_string(htmlspecialchars(clean_str($_POST['username'])));
    66. $pass = $conn->real_escape_string(htmlspecialchars($_POST['password']));
    67. $realpass = hash("sha256",$user.$salt.$pass);
    68. $query = "SELECT user_id, passwd FROM user WHERE user_id LIKE '$user' LIMIT 1";
    69. $exec = $conn->query($query);
    70. $res = $exec->fetch_object();
    71. If ($res->passwd == $realpass)
    72. {
    73. $_SESSION["username"] = $user;
    74. ?>
    75. <script type="text/javascript">
    76. location.href='home.php';
    77. </script>
    78. <?php
    79. }
    80. Else;
    81. {
    82. echo "Something has gone wrong, Please contact an Admin!";
    83. die;
    84. }
    85. }
    86. }
    87. Else;
    88. {
    89. echo '<form id="login" name="login" method="post" action="login.php">
    90. <table width="100%">
    91. <tr>
    92. <td class="span">Username:</td>
    93. <td class="input"><input id="username" name="username" type="text" tabindex="1" ></td>
    94. <td class="msg"><span class="field-validation-valid" data-valmsg-for="UserName" data-valmsg-replace="true"></span></td>
    95. </tr>
    96. <tr>
    97. <td class="span">Password:</td>
    98. <td class="input"><input id="password" name="password" type="password" tabindex="2" ></td>
    99. <td class="msg"><span class="field-validation-valid" data-valmsg-for="Password" data-valmsg-replace="true"></span></td>
    100. </tr>
    101. </table>
    102. </div>
    103. <div class="formBtn">
    104. <input type="image" src="/Content/images/btn-login.png" />
    105. </div>
    106. </form>';
    107. }
    108. ?>
    109. </div>
    110. </div>
    111. </div>
    112. </div>
    113. <?php require('include/footer.php'); ?>
    114. <div id="flashboxheader">
    115. <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="1600" height="350" id="eow_v2b_960x433" align="middle">
    116. <param name="movie" value="ht" />
    117. <param name="quality" value="high" />
    118. <param name="bgcolor" value="#333333" />
    119. <param name="play" value="true" />
    120. <param name="loop" value="true" />
    121. <param name="wmode" value="transparent" />
    122. <param name="scale" value="showall" />
    123. <param name="menu" value="true" />
    124. <param name="devicefont" value="false" />
    125. <param name="salign" value="" />
    126. <param name="allowScriptAccess" value="sameDomain" />
    127. <!--[if !IE]>-->
    128. <object type="application/x-shockwave-flash" data="ht" width="1600" height="350">
    129. <param name="movie" value="ht" />
    130. <param name="quality" value="high" />
    131. <param name="bgcolor" value="#333333" />
    132. <param name="play" value="true" />
    133. <param name="loop" value="true" />
    134. <param name="wmode" value="transparent" />
    135. <param name="scale" value="showall" />
    136. <param name="menu" value="true" />
    137. <param name="devicefont" value="false" />
    138. <param name="salign" value="" />
    139. <param name="allowScriptAccess" value="sameDomain" />
    140. <!--<![endif]-->
    141. <!--[if !IE]>-->
    142. </object>
    143. <!--<![endif]-->
    144. </object>
    145. </div>
    146. <!-- Other -->
    147. <div id="fb-root"></div>
    148. <script type="text/javascript">
    149. var _gaq = _gaq || [];
    150. _gaq.push(['_setAccount', 'UA-30471409-1']);
    151. _gaq.push(['_trackPageview']);
    152. (function () {
    153. var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    154. ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    155. var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
    156. })();
    157. </script>
    158. </body>
    159. </html>
    Alles anzeigen


    und

    Donation.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" xmlns:fb="http://ogp.me/ns/fb#">
    3. <head>
    4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    5. <title><?php require('include/title.php'); ?></title>
    6. <link href="Content/css/global2ae6.css" rel="stylesheet" type="text/css" />
    7. <link href="Content/theme/themef796.css" rel="stylesheet" type="text/css" />
    8. <script src="Scripts/jquery.min.js" type="text/javascript"></script>
    9. <script src="Scripts/global6d93.js" type="text/javascript"></script>
    10. <script src="Content/theme/rustyle.css" rel="stylesheet" type="text/css" />
    11. <script type="text/javascript" src="../www.n.com/RULC/Home/SignOnJS52b3html.html?.r=1039038721"></script>
    12. <script type="text/javascript"> checkLogIn(false); </script></head>
    13. <body>
    14. <div id="topWrap">
    15. <div id="topNav">
    16. <div id="topNavSiteInfo">
    17. <h1>Noxen RoM</h1>
    18. </div>
    19. <?php require('include/upside.php'); ?>
    20. </div>
    21. <div id="mainWrap">
    22. <div id="mainBox" class="clear">
    23. <div id="side">
    24. <div id="sideTop">
    25. <div class="title">Status And Time</div>
    26. <div class="status offline"></div>
    27. <div id="serverTime">
    28. <script type="text/javascript">clock()</script>
    29. </div>
    30. </div>
    31. <?php require('include/left_menu.php'); ?>
    32. <div id="main">
    33. <div class="topBanner"><?php require('include/slider.php'); ?></div>
    34. <div class="title donate"></div>
    35. <div class="group">
    36. Donation Page
    37. </div>
    38. </div>
    39. </div>
    40. <?php require('include/footer.php'); ?>
    41. <div id="flashboxheader">
    42. <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="1600" height="350" id="eow_v2b_960x433" align="middle">
    43. <param name="movie" value="ht" />
    44. <param name="quality" value="high" />
    45. <param name="bgcolor" value="#333333" />
    46. <param name="play" value="true" />
    47. <param name="loop" value="true" />
    48. <param name="wmode" value="transparent" />
    49. <param name="scale" value="showall" />
    50. <param name="menu" value="true" />
    51. <param name="devicefont" value="false" />
    52. <param name="salign" value="" />
    53. <param name="allowScriptAccess" value="sameDomain" />
    54. <!--[if !IE]>-->
    55. <object type="application/x-shockwave-flash" data="ht" width="1600" height="400">
    56. <param name="movie" value="ht" />
    57. <param name="quality" value="high" />
    58. <param name="bgcolor" value="#333333" />
    59. <param name="play" value="true" />
    60. <param name="loop" value="true" />
    61. <param name="wmode" value="transparent" />
    62. <param name="scale" value="showall" />
    63. <param name="menu" value="true" />
    64. <param name="devicefont" value="false" />
    65. <param name="salign" value="" />
    66. <param name="allowScriptAccess" value="sameDomain" />
    67. <!--<![endif]-->
    68. <!--[if !IE]>-->
    69. </object>
    70. <!--<![endif]-->
    71. </object>
    72. </div>
    73. <!-- Other -->
    74. <div id="fb-root"></div>
    75. <script type="text/javascript">
    76. var _gaq = _gaq || [];
    77. _gaq.push(['_setAccount', 'UA-30471409-1']);
    78. _gaq.push(['_trackPageview']);
    79. (function () {
    80. var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    81. ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    82. var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
    83. })();
    84. </script>
    85. </body>
    86. </html>
    Alles anzeigen
  • Also wenn ich das richtig sehe wird ja der Username in der Session beim login gespeichert. Entsprechend könnte über eine Abfrage der login überprüft werden:

    Quellcode

    1. if( ! isset( $_SESSION["username"] ) ) {
    2. //do something
    3. }


    Beim //do something kommt es darauf an was du machen möchtest

    Möglich wäre zum Beispiel ein Redirect zu einer anderen Seite:

    Quellcode

    1. if( ! isset( $_SESSION["username"] ) ) {
    2. header("Location: your location here");
    3. exit();
    4. }


    Oder einfach nur das Abbrechen und ausgeben einer Fehlermeldung:

    Quellcode

    1. if( ! isset( $_SESSION["username"]) ) {
    2. exit("Sorry login required for this area!");
    3. }


    Das ganze natürlich an den Anfang des Skripts/der Seite setzen, damit im Falle eines fehlenden Logins nichts mehr ausgeführt wird.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von BackwardsEmanresu () aus folgendem Grund: Reformat Corrected code

  • Naja zum Beispiel so:

    Quellcode

    1. <?php
    2. //don't forget to start the session ;)
    3. session_start();
    4. if( ! isset( $_SESSION["username"] ) ) {
    5. exit("Sorry login required for this area!");
    6. }
    7. ?>
    8. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    9. <html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://ogp.me/ns/fb#">
    10. <head>
    11. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    12. <title><?php require('include/title.php'); ?></title>
    13. <link href="Content/css/global2ae6.css" rel="stylesheet" type="text/css" />
    14. <link href="Content/theme/themef796.css" rel="stylesheet" type="text/css" />
    15. <script src="Scripts/jquery.min.js" type="text/javascript"></script>
    16. <script src="Scripts/global6d93.js" type="text/javascript"></script>
    17. <script src="Content/theme/rustyle.css" rel="stylesheet" type="text/css" />
    18. <script type="text/javascript" src="../www.n.com/RULC/Home/SignOnJS52b3html.html?.r=1039038721"></script>
    19. <script type="text/javascript"> checkLogIn(false); </script></head>
    20. <body>
    21. <div id="topWrap">
    22. <div id="topNav">
    23. <div id="topNavSiteInfo">
    24. <h1>Noxen RoM</h1>
    25. </div>
    26. <?php require('include/upside.php'); ?>
    27. </div>
    28. <div id="mainWrap">
    29. <div id="mainBox" class="clear">
    30. <div id="side">
    31. <div id="sideTop">
    32. <div class="title">Status And Time</div>
    33. <div class="status offline"></div>
    34. <div id="serverTime">
    35. <script type="text/javascript">clock()</script>
    36. </div>
    37. </div>
    38. <?php require('include/left_menu.php'); ?>
    39. <div id="main">
    40. <div class="topBanner"><?php require('include/slider.php'); ?></div>
    41. <div class="title donate"></div>
    42. <div class="group">
    43. Donation Page
    44. </div>
    45. </div>
    46. </div>
    47. <?php require('include/footer.php'); ?>
    48. <div id="flashboxheader">
    49. <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="1600" height="350" id="eow_v2b_960x433" align="middle">
    50. <param name="movie" value="ht" />
    51. <param name="quality" value="high" />
    52. <param name="bgcolor" value="#333333" />
    53. <param name="play" value="true" />
    54. <param name="loop" value="true" />
    55. <param name="wmode" value="transparent" />
    56. <param name="scale" value="showall" />
    57. <param name="menu" value="true" />
    58. <param name="devicefont" value="false" />
    59. <param name="salign" value="" />
    60. <param name="allowScriptAccess" value="sameDomain" />
    61. <!--[if !IE]>-->
    62. <object type="application/x-shockwave-flash" data="ht" width="1600" height="400">
    63. <param name="movie" value="ht" />
    64. <param name="quality" value="high" />
    65. <param name="bgcolor" value="#333333" />
    66. <param name="play" value="true" />
    67. <param name="loop" value="true" />
    68. <param name="wmode" value="transparent" />
    69. <param name="scale" value="showall" />
    70. <param name="menu" value="true" />
    71. <param name="devicefont" value="false" />
    72. <param name="salign" value="" />
    73. <param name="allowScriptAccess" value="sameDomain" />
    74. <!--<![endif]-->
    75. <!--[if !IE]>-->
    76. </object>
    77. <!--<![endif]-->
    78. </object>
    79. </div>
    80. <!-- Other -->
    81. <div id="fb-root"></div>
    82. <script type="text/javascript">
    83. var _gaq = _gaq || [];
    84. _gaq.push(['_setAccount', 'UA-30471409-1']);
    85. _gaq.push(['_trackPageview']);
    86. (function () {
    87. var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    88. ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    89. var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
    90. })();
    91. </script>
    92. </body>
    93. </html>
    Alles anzeigen


    Ich kann natürlich keine Garantie für absoulte Einbruchsicherheit oder ähnliches geben.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von BackwardsEmanresu ()

  • Danke dir, allerdings ergibt sich nach dem Einfügen folgendes Problem

    Serverfehler
    Beim Abrufen von xyz/donation.php ist auf der Website ein Fehler aufgetreten. Möglicherweise wird sie gerade gewartet oder ist falsch konfiguriert.
    Vorschläge:
    Laden Sie diese Webseite später erneut.
    HTTP-Fehler 500 (Internal Server Error): Beim Versuch des Servers, die Anforderung zu verarbeiten, ist eine unerwartete Bedingung aufgetreten.
  • Das Problem ist vermutlich ein einfacher Syntaxfehler.

    Korrekt müsste es lauten:

    Quellcode

    1. if( !isset( $_SESSION["username"] ) ) {...}


    Da die Session Variable ein assoziatives Array ist erfolgt der Zugriff auf die Einträge natürlich mit eckigen Klammern.

    Im allgemeinen empfehle ich nicht blind Code aus irgendwelchen Foren zu übernehmen, gerade wenn es um Sicherheitsangelegenheiten geht, immer gegenchecken...
    (Und so lernt man auch nichts... ;))
  • BackwardsEmanresu schrieb:

    Das Problem ist vermutlich ein einfacher Syntaxfehler.

    Korrekt müsste es lauten:

    Quellcode

    1. if( !isset( $_SESSION["username"] ) ) {...}


    Da die Session Variable ein assoziatives Array ist erfolgt der Zugriff auf die Einträge natürlich mit eckigen Klammern.

    Im allgemeinen empfehle ich nicht blind Code aus irgendwelchen Foren zu übernehmen, gerade wenn es um Sicherheitsangelegenheiten geht, immer gegenchecken...
    (Und so lernt man auch nichts... ;))

    Danke für die Hilfe, ich werd's probieren.


    *Kopf kratz*

    Wirklich lernen muss nicht sein - sondern nur Fehler beheben, die derzeit bestehen, bis der Programmierer wieder seine Arbeit macht.
    Ich bin als 3D Designer lieber bei meinen Farbkästchen ;)


    Und ja, es funktioniert ausgezeichnet. Danke :)
    Wie würde dieser Code aussehen müssen, wenn nicht eingeloggt User auf die Login-Seite (login.php) redirected werden sollen?
    Danke im Voraus :=)