Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

PHP a MySQL  Připojení k databázi: mysql_connect(SQL_HOST, SQL_USERNAME, SQL_PASSWORD); mysql_select_db($SQL_DBNAME);  př. Kontrola spojení: $link =

Podobné prezentace


Prezentace na téma: "PHP a MySQL  Připojení k databázi: mysql_connect(SQL_HOST, SQL_USERNAME, SQL_PASSWORD); mysql_select_db($SQL_DBNAME);  př. Kontrola spojení: $link ="— Transkript prezentace:

1 PHP a MySQL  Připojení k databázi: mysql_connect(SQL_HOST, SQL_USERNAME, SQL_PASSWORD); mysql_select_db($SQL_DBNAME);  př. Kontrola spojení: $link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password'); if(!is_resource($link)) { echo "Failed to connect to the server\n"; …  Uzavření spojení MySQL_Close(); MySQL_Close($link);

2 Získání výsledků  získání pole, všech řádků $vysledek=mysql_query("select * from psc where psc=".$_POST["psc"]); $vysledek = mysql_query($sql,$connection) or die ("Nemohu provést dotaz: “. $query_error);  zjištění počtu vrácených řádků $radku=mysql_num_rows($vysledek); if ($radku==0) echo "PSČ…

3 Procházení řádků while ($zaznam=MySQL_Fetch_Array($vysledek)) { echo …; echo …;} $zaznam je pole sloupců, hodnot řádku!

4 Výpis hodnot  echo $zaznam[‘id’];  echo $zaznam[‘prijmeni’]. ‘, ’. $zaznam[‘jmeno’];  echo “ ”; … $ID=$_GET[‘ID_user’] … $sql=“SELECT * FROM admins WHERE ID=$ID”; …

5 Stránkování 1.zjistit počet záznamů 2.omezit dotazem přes LIMIT 3.předávat přes URL 1.list.php?page=2 2.SELECT count(ID) FROM … 3.SELECT … LIMIT 11,10

6 Neukládání hesel  Pro případ krádeže dat: hesla neukládat!  Použít jednostrannou funkci – hash –př.: $heslo=md5($_POST[‘heslo’]); $heslo=md5($_POST[‘heslo’]. ‘sul’); $sql=“SELECT * FROM usernames WHERE user=‘$username’ AND psw=$heslo”

7 SQL injection  Kontrolovat hodnoty, typy! –settype($offset, 'integer'); –$query = sprintf("SELECT id, name FROM products ORDER BY name LIMIT 20 OFFSET %d;", $offset);  Kontrolovat uvozovky, escape sekvence –mysql_escape_string(), sql_escape_string(), addslashes(), str_replace($search, $replace)… mysql_escape_string() –př.: $query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'", mysql_real_escape_string($user), mysql_real_escape_string($password));  Nezveřejňovat databázové schéma, SQL dotazy…

8 SQL injection, ochrana ve funkci $i){ $output[$k]=sanitize($i); } } else{ if(get_magic_quotes_gpc()){ $input=stripslashes($input); } $output=mysql_real_escape_string($input); } return $output; } ?> // use: if you are going to use $_POST, $_GET, $_COOKIE or $_REQUEST, include the appropriate line first. $_POST=sanitize($_POST); $_GET=sanitize($_GET); $_COOKIE=sanitize($_COOKIE); $_REQUEST=sanitize($_REQUEST); $i){ $output[$k]=sanitize($i); } } else{ if(get_magic_quotes_gpc()){ $input=stripslashes($input); } $output=mysql_real_escape_string($input); } return $output; } ?> // use: if you are going to use $_POST, $_GET, $_COOKIE or $_REQUEST, include the appropriate line first. $_POST=sanitize($_POST); $_GET=sanitize($_GET); $_COOKIE=sanitize($_COOKIE); $_REQUEST=sanitize($_REQUEST);

9 Vložení uživatele do databáze if(IsSet($sent)): require("db.php"); $write = true; if($name=="" || $password=="" || $password_2==""): $error = 'Musíte vyplnit všechny povinné údaje - označeny tučným písmem.'; $write = false; elseif($password!=$password_2): $error = 'Heslo nebylo zadáno správně.'; $write = false; else: $user = MySQL_Query("SELECT name FROM users") or die($query_error); while($entry = MySQL_Fetch_Array($user)): if(StrToLower($name)==StrToLower($entry["name"])): $error = 'Toto uživ. jméno již existuje, vyberte si prosím jiné.'; $write = false; break; endif; endwhile; endif; if($write): …

10 Vložení uživatele do databáze  … if($write): $add = MySQL_Query("INSERT INTO users VALUES ('$nick', '$name', '$password', '$ ', '$icq', '30', '$avatar', '$xfire', '$skype', '$sex')") or die(mysql_error()); SetCookie("cookie_author", $nick); SetCookie("cookie_ ", $ ); echo ' Registrace proběhla úspěšně : Jméno:'. $name. ' '. $ . ' Za 5 vteřin budete přesměrováni. '; endif; MySQL_Close();

11 GET, POST opakování V PHP zaslané hodnoty získáme z pole:  $user=$_GET["username"] –pro … –…test.php?username=moje%20jmeno&akce=OK –data součástí URL (viditelná, omezeno délkou)  $user=$_POST["username"] –pro … –data součástí HTTP požadavku (neviditelná v URL, uuencoded, "neomezená" délka dle URL)

12 Upload Souborů } else { print "Při nahrávání souboru došlo k chybě! "; } } else { print "Soubor není požadového MIME typu! "; } } … příp. při podmínce else ($_POST["akce"] == "Upload") řešit vypsání formuláře, při špatném mimetype smazat ?>

13 Pozor na…  SQL Injection –kontrolovat obsah, hodnoty (viz Databáze, funkce mysql_real_escape_string(), settype())  opětovné vkládání při refresh – – –SELECT Count(ID) WHERE … -> INSERT/UPDATE  Podvrhy při uploadu (is_uploaded_file())  Maximální velikost, upload více souborů viz manuál PHP, odkaz na konci prezentace

14 Identifikace, autentizace, autorizace Jak se liší?  Identifikace – kdo jsi?  Autentizace – jsi skutečně ten, za koho se vydáváš  Autorizace – máš sem skutečně přístup?  Autorizace se sessions a MySQL –http://www.jaknaweb.com/tipy-triky/php- mysql/34/autorizace-uzivatelu-zaheslovany-pristup mysql/34/autorizace-uzivatelu-zaheslovany-pristuphttp://www.jaknaweb.com/tipy-triky/php- mysql/34/autorizace-uzivatelu-zaheslovany-pristup

15 Autorizace I.  soubor.htaccess pro Apache –platí pro Apache – adresář a podadresáře –dále umí blokování přístupu z IP adres, redirect, vlastní chybové stránky aj. viz apache httpd.conf –http://emp.wz.cz/htconfig/autorizace-pomoci-htaccess.html

16 Autorizace II.  HTTP protokolem –proměnné $PHP_AUTH_USER, $PHP_AUTH_PW a $PHP_AUTH_TYPE –Header("HTTP/ Unauthorized"); Header("WWW-Authenticate: Basic realm=\"Stranky XYZ\""); die("Neautorizovaný přístup\"); –http://blackhole.sk/zabezpeceni-php-skriptu-heslem-ii

17 Autorizace III.  vlastním formulářem –použít SSL –pro uložení hash použít Sessions/Cookies a MySQL –kontrolovat timeout, IP adresu –pozor na ukládání username do Cookies aj. spoléhání na Cookies/Sessions

18 Kontrola přihlášení se sessions  Nutno kontrolovat, zda session existuje z dřívějška  Možno uložit do session a kontrolovat IP adresu, zda nedošlo ke změně, a čas session_start(); if ($_SESSION['isvalid']!=1) { // pokud testovací proměnná neexistuje nebo nemá správnou hodnotu, vynutit např. nové přihlášení Header('Location: Exit; }

19 PHP a Mail if $ )) { echo "Zadali jste je neplatný "; echo "Zadali jste je neplatný "; exit; } $hlavicky.= "From: ".$ ."\n"; // $hlavicky.= "Content-Type: text/html; charset=utf-8\n"; $predmet, $zprava, $hlavicky);


Stáhnout ppt "PHP a MySQL  Připojení k databázi: mysql_connect(SQL_HOST, SQL_USERNAME, SQL_PASSWORD); mysql_select_db($SQL_DBNAME);  př. Kontrola spojení: $link ="

Podobné prezentace


Reklamy Google