• 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?

Object Storage Arubacloud
0 głosów
303 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 (600,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 (600,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ź 322 wizyt
pytanie zadane 2 marca 2018 w PHP przez toffik93 Bywalec (2,820 p.)
0 głosów
0 odpowiedzi 116 wizyt
–1 głos
1 odpowiedź 1,488 wizyt
pytanie zadane 16 października 2015 w Algorytmy przez Daniel Mazur Obywatel (1,160 p.)

92,543 zapytań

141,386 odpowiedzi

319,500 komentarzy

61,929 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...