Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Ukrycie funkcji include() - wczytać a nie wyświetlić
Forum PHP.pl > Forum > Przedszkole
enimatto
Witam wszystkich.
Mam prosty skrypt do zalogowania się do konkretnej strefy po podaniu hasła.
Chciałem, aby takie hasło można sobie zmieniać co jakiś czas, ale nie z poziomu webmastera - FTP itp,
lecz dla laika - poprzez Panel Admina. Podpiąłem taki panel i resztę, logowanie działa, ale mam problem z ukryciem hasła, które
pojawia się na stronie logowania.

Konkretnie - hasło muszę podać w funkcji:

$LOGOWANIE = array('hasło');

Więc wymyśliłem sobie że w miejsce gdzie ma być hasło, podepnę CMS-a, gdzie hasło można sobie uzupełnić z wspomnianego Panelu Admina.

Teraz wygląda to tak:

$LOGOWANIE = array(include("pass.php"));

Działa, odczytuje hasło prawidłowo, ale hasło ustalone w panelu pojawia się na stronie logowania jako czysty tekst (obox boxa).
Wiem, że to logiczne, bo w końcu "include" do tego służy, ale myślałem że stuninguję to jakoś, dam jakiś inny parametr
i uda mi się to schować, a jedynie przekażę to dalej. Cały dzień walczę, szukam i nic sad.gif

Czy da się coś w tej materii prosto wykombinować, czy mam szukać innego rozwiązania?
!*!
Cytat(enimatto @ 15.11.2012, 21:17:51 ) *
Konkretnie - hasło muszę podać w funkcji:
$LOGOWANIE = array('hasło');


To nie funkcja, tylko zmienna z tablicą. Include wczytuje pliki, w nich widocznie masz coś co wyświetla tę zmienną. Pokaż więcej kodu.
-enimatto-
Ok.
CMS'a wszędzie wywołuję poprzez include("cms.php"), z tym że na różnych podstronach zmieniam tylko jedynie kategorię ( np. $category = "5";),
dlatego wyświetla mi inne treści na każdej podstronie. Stąd pomysł aby podpiąć go pod miejsce gdzie jest hasło i przez panel sobie to zmieniać.
"pass.php" dałem jedynie jako przykład, ale to jest wszędzie ten sam plik "cms.php", a to jest cały CMS praktycznie.
Niżej cały kod, który odpowiada za skrypt zabezpieczający stronę hasłem.

  1. <?php
  2.  
  3. $category = "10";
  4.  
  5. $LOGIN_INFORMATION = array(include("cms.php"));
  6.  
  7. define('USE_USERNAME', false);
  8. define('LOGOUT_URL', 'http://www.example.com/');
  9. define('TIMEOUT_MINUTES', 1);
  10. define('TIMEOUT_CHECK_ACTIVITY', true);
  11.  
  12. if(isset($_GET['help'])) {
  13. die('Include following code into every page you would like to protect, at the very beginning (first line):<br>&lt;?php include("' . str_replace('\\','\\\\',__FILE__) . '"); ?&gt;');
  14. }
  15.  
  16. $timeout = (TIMEOUT_MINUTES == 0 ? 0 : time() + TIMEOUT_MINUTES * 60);
  17.  
  18. if(isset($_GET['logout'])) {
  19. setcookie("verify", '', $timeout, '/');
  20. header('Location: ' . LOGOUT_URL);
  21. exit();
  22. }
  23.  
  24. if(!function_exists('showLoginPasswordProtect')) {
  25.  
  26. function showLoginPasswordProtect($error_msg) {
  27. ?>
  28. <html>
  29. <head>
  30. <title>Please enter password to access this page</title>
  31. <META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
  32. <META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
  33. </head>
  34. <body>
  35. <style>
  36. input { border: 1px solid black; }
  37. </style>
  38. <div style="width:500px; margin-left:auto; margin-right:auto; text-align:center">
  39. <form method="post">
  40. <h3>Please enter password to access this page</h3>
  41. <font color="red"><?php echo $error_msg; ?></font><br />
  42. <?php if (USE_USERNAME) echo 'Login:<br /><input type="input" name="access_login" /><br />Password:<br />'; ?>
  43. <input type="password" name="access_password" /><p></p><input type="submit" name="Submit" value="Submit" />
  44. </form>
  45. <br />
  46. <a style="font-size:9px; color: #B0B0B0; font-family: Verdana, Arial;" href="http://www.zubrag.com/scripts/password-protect.php" title="Download Password Protector">Powered by Password Protect</a>
  47. </div>
  48. </body>
  49. </html>
  50.  
  51. <?php
  52. die();
  53. }
  54. }
  55.  
  56. if (isset($_POST['access_password'])) {
  57.  
  58. $login = isset($_POST['access_login']) ? $_POST['access_login'] : '';
  59. $pass = $_POST['access_password'];
  60. if (!USE_USERNAME && !in_array($pass, $LOGIN_INFORMATION)
  61. || (USE_USERNAME && ( !array_key_exists($login, $LOGIN_INFORMATION) || $LOGIN_INFORMATION[$login] != $pass ) )
  62. ) {
  63. showLoginPasswordProtect("Incorrect password.");
  64. }
  65. else {
  66.  
  67. setcookie("verify", md5($login.'%'.$pass), $timeout, '/');
  68.  
  69. unset($_POST['access_login']);
  70. unset($_POST['access_password']);
  71. unset($_POST['Submit']);
  72. }
  73.  
  74. }
  75.  
  76. else {
  77.  
  78. if (!isset($_COOKIE['verify'])) {
  79. showLoginPasswordProtect("");
  80. }
  81.  
  82. $found = false;
  83. foreach($LOGIN_INFORMATION as $key=>$val) {
  84. $lp = (USE_USERNAME ? $key : '') .'%'.$val;
  85. if ($_COOKIE['verify'] == md5($lp)) {
  86. $found = true;
  87.  
  88. if (TIMEOUT_CHECK_ACTIVITY) {
  89. setcookie("verify", md5($lp), $timeout, '/');
  90. }
  91. break;
  92. }
  93. }
  94. if (!$found) {
  95. showLoginPasswordProtect("");
  96. }
  97.  
  98. }
  99.  
  100. ?>
!*!
Zacznijmy od tego że to jest jakaś kompletna bzdura która jest daleka od przeglądania treści na switch(), a co dopiero CMS.
Poza tym co znajduje się w pliku cms.php ? Pokaż go.
Jeśli chcesz zmieniać hasło, to najprościej będzie je umieścić w tablicy $config, po czym zapisywać ją do pliku i tenże plik dołączyć do index.php.

  1. $config = array('login'=>'mojlogin', 'password'=>'mojehaslo');
  2.  
  3. file_put_content('config.php',var_export($config));
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.