Wątek przeniesiony 2015-09-19 17:16 z PHP przez dzek69.

Funkcja 'die' która usuwa stopkę i resztę strony.

0

Witam, korzystam z http://rafal.brzezinski.me/logowanie_i_rejestracja do zrobienia systemu logowania na mojej stronie no i teraz tak. Jak wchodzę na stronę to mam 2 opcje, "logowanie" i "rejestracja". No i nie mam stopki... Jak wchodzę na podstronę logowanie.php albo rejestracja.php to stopka jest. Jak się zaloguje i wejdę na stronę główną to stopka też jest... Po analizie doszedłem do wniosku że usuwanie stopki powoduje funkcja "die" w pliku config.php ponizej :

<?php
 
			// definiujemy dane do połączenia z bazą danych
			define('DBHOST', 'localhost');
			define('DBUSER', 'root');
			define('DBPASS', '');
			define('DBNAME', 'konta');
			 
			function db_connect() {
				// połączenie z mysql
				mysql_connect(DBHOST, DBUSER, DBPASS) or die('<h2>ERROR</h2> MySQL Server is not responding');
			 
				// wybór bazy danych
				mysql_select_db(DBNAME) or die('<h2>ERROR</h2> Cannot connect to specified database');
			}
			 
			function db_close() {
				mysql_close();
			}
			 
			function clear($text) {
				// jeśli serwer automatycznie dodaje slashe to je usuwamy
				if(get_magic_quotes_gpc()) {
					$text = stripslashes($text);
				}
				$text = trim($text); // usuwamy białe znaki na początku i na końcu
				$text = mysql_real_escape_string($text); // filtrujemy tekst aby zabezpieczyć się przed sql injection
				$text = htmlspecialchars($text); // dezaktywujemy kod html
				return $text;
			}
			 
			function codepass($password) {
				// kodujemy hasło (losowe znaki można zmienić lub całkowicie usunąć
				return sha1(md5($password).'#!%Rgd64');
			}
			 
			// funkcja na sprawdzanie czy user jest zalogowany, jeśli nie to wyświetlamy komunikat
			function check_login() {
				if(!$_SESSION['logged']) {
					__**die('<p>Zaloguj się aby mieć pełen dostęp do strony.</p>**__
```php
					<p>[<a href="logowanie.php">Zaloguj się</a>] <br>[<a href="rejestracja.php">Zarejestruj się</a>]</p>');
				}
			}
			 
			// funkcja na pobranie danych usera
			function get_user_data($user_id = -1) {
				// jeśli nie podamy id usera to podstawiamy id aktualnie zalogowanego
				if($user_id == -1) {
					$user_id = $_SESSION['user_id'];
				}
				$result = mysql_query("SELECT * FROM `users` WHERE `user_id` = '{$user_id}' LIMIT 1");
				if(mysql_num_rows($result) == 0) {
					return false;
				}
				return mysql_fetch_assoc($result);
			}
			 
			// startujemy sesje
			session_start();
			 
			// jeśli nie ma jeszcze sesji "logged" i "user_id" to wypełniamy je domyślnymi danymi
			if(!isset($_SESSION['logged'])) {
				$_SESSION['logged'] = false;
				$_SESSION['user_id'] = -1;
			}
			?> 

No i teraz pytanie do was drodzy forumowicze co zrobić żeby ta stopka mi jednak nie znikała?

0

Jedno z proponowanych rozwiązań przeze mnie to zaimplementować funkcję, która by wczytywała szablon strony, pokazywała komunikat o błędzie i na końcu tej funkcji byłaby komenda exit a najlepiej podzielić to między klasy np. klasa odpowiadająca za autoryzację, klasa odpowiadająca za błędy itp.

0

Co do problemu: zamiast die, użyć echo.

W ramach nauki:

  1. Funkcji mysql_ nie używamy bo http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php?answertab=active#tab-top
  2. md5 do haseł jest słabe http://php.net/manual/en/faq.passwords.php
  3. sesje wypada startować gdzieś na początku "głównego" skryptu, a nie gdzieś w środku configa.
  4. naucz się OOP i jakiegoś frameworka, bo na dłuższą metę takie printowanie html'a gdzie popadnie to słaby pomysł.

1 użytkowników online, w tym zalogowanych: 0, gości: 1