• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Skrypty PHP w obu wersjach (index.php i db.php - połączenie z bazą danych). Które warianty lepsze?

VPS Starter Arubacloud
0 głosów
301 wizyt
pytanie zadane 7 października 2015 w PHP przez Krzysiek_34 Mądrala (6,050 p.)

index.php (wariant nr 1):

<?php

session_start();

include 'db.php';

if(isset($_SESSION['user_id'])){
	include "profil.php";
else
	include "index.php";
}
?>

<!DOCTYPE html>
.....................
.....................

index.php (wariant nr 2):

<?php
session_start();

require 'db.php';

if(isset($_SESSION['user_id'])){

	$records = $conn->prepare('SELECT id,email,password FROM users WHERE id = :id');
	$records->bindParam(':id', $_SESSION['user_id']);
	$records->execute();
	$results = $records->fetch(PDO::FETCH_ASSOC);

	$user = NULL;

	if(count($results) > 0){
		$user = $results;
	}

}
?>

<!DOCTYPE html>
.....................
.....................

db.php (wariant nr 1):

<?php
$db_host = 'localhost';
$db_name = 'nazwa_bazy';
$db_user = 'user';
$db_pass = 'password';
$db_charset = 'utf8';

try
{
	$db = new PDO('mysql:dbname='.$db_name.';host='.$db_host.';charset='.$db_charset.';', $db_user, $db_pass);
}
catch(PDOException $e)
{
	die($e->getMessage());
}
?>

db.php (wariant nr 2):

<?php
$server = 'localhost';
$username = 'root';
$password = 'root';
$database = 'auth';

try{
	$conn = new PDO("mysql:host=$server;dbname=$database;", $username, $password);
} catch(PDOException $e){
	die( "Połączenie nie powiodło się: " . $e->getMessage());
}

profil.php (skrypt z zalogowanym użytkownikiem)

if ((isset($_SESSION['zalogowany'])) && ($_SESSION['zalogowany']==true)) {
    echo "<li><a id='$btnId' href='profile.php?user=$_SESSION[id]'>WITAJ ".$_SESSION['user']."</a></li>
    <li id='login'><a href='logout.php'>WYLOGUJ&nbsp;SIĘ</a></li>";
}
else {
    echo "<li id='register'><a id='regLink' href='register.php'>REJESTRACJA</a></li>
    <li id='login'><a id='logLink' href='logowanie.php'>ZALOGUJ&nbsp;SIĘ</a></li>";
}

Skrypt profil.php będę jeszcze lekko modyfikował. Zamiast true (brak błędów, ale i brak wyniku) będę wpisywał jeszcze inne konwersje, np. false (w przypadku jakiegoś błędu, niepowodzenia - przerwanie operacji) albo ewentualnie wartości liczbowe -1, 0, 1.

W praktyce strona ma działać w ten sposób:
Strona główna index.php na górze po prawej posiada przyciski [Kontakt] i [Logowanie]. Po kliknięciu na [Logowanie] wyskakuje mi pole, które zawiera:
1. pole formularza z możliwością wpisania loginu (nazwy użytkownika)
2. pole formularza z możliwością wpisania hasła
3. przycisk LOGOWANIE
4. przycisk REJESTRACJA (to już inny temat).

Skrypt profil.php z zalogowanym użytkownikiem ma wyglądać tak:
Na górze po prawej ma być tylko ikonka, a pod nią NAZWA UŻYTKOWNIKA. Gdy kliknę na tę ikonkę, to chciałbym, aby wyskoczyło mi małe pole, które będzie zawierało:
1. Witaj NAZWA UŻYTKOWNIKA
2. przycisk WYLOGUJ (po jego kliknięciu ma być powrót do strony głównej - index.php).

Który z podanych powyżej skryptów jest lepszy i bezbłędny?

1 odpowiedź

0 głosów
odpowiedź 7 października 2015 przez Comandeer Guru (599,730 p.)
Z index.php nie wybrałbym żadnego, tylko od razu pomyślał o jakimś prostym MVC. Jak już wybierać, to wariant 1.

Z db.php wariant pierwszy, chociaż i tak nie do końca (poczytaj sobie o opcjach konfiguracyjnych PDO, np o typie rzucanych błędów).
komentarz 7 października 2015 przez Krzysiek_34 Mądrala (6,050 p.)

OK. A jaka jest różnica pomiędzy include a require?

include - włączyć

require - wymagać, żądać, wymuszać

W index.php wariant nr 1 zawiera include, czyli włącza podany skrypt. A gdybym zamiast include wpisał require, to wymuszałbym na siłę uruchomienie podanego skryptu?

komentarz 7 października 2015 przez Comandeer Guru (599,730 p.)
Różnicę najlepiej wyjaśnia manual: http://php.net/requirehttp://php.net/include
komentarz 7 października 2015 przez Krzysiek_34 Mądrala (6,050 p.)

Wg. mnie lepiej zastosować include.

Podobne pytania

0 głosów
1 odpowiedź 320 wizyt
pytanie zadane 2 marca 2018 w PHP przez toffik93 Bywalec (2,820 p.)
0 głosów
0 odpowiedzi 115 wizyt
–1 głos
1 odpowiedź 1,481 wizyt
pytanie zadane 16 października 2015 w Algorytmy przez Daniel Mazur Obywatel (1,160 p.)

92,452 zapytań

141,262 odpowiedzi

319,080 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...