Դաս 70 – PHP: Փակել և բացել կապը դեպի database

0

Այս բաժնում դուք կտեսնեք, թե ինչպես պետք է շահարկել Address Book database-ը, որը ստեղծել ենք նախորդ դասի ընթացքում։   Օգտագործելով PHP կոդ, առաջին հերթին բացեք database-ը, ապա կարդացեք դրա բովանդակությունը: Դուք նաև պետք է իմանաք, թե ինչպես ավելացնել նոր record կամ ինչպես ջնջել այն։ Սական նախևառաջ database-ը անհրաժեշտ է բացել, նախքան որևէ գործողություն սկսելը։

Բացեք կապը դեպի  MySQL Database

Առաջին գործը, ըստ էության, կապնվելն է MySQL-ին։ Ինչպես արդեն իսկ հուշում է mysqli_connect( ) անունը այն կկատարի գործողությունը։ Ահա կոդը, որը մենք մտադիր ենք օգտագործելով: Բայց խորհուրդ ենք տալիս չօգտագործել այն ինտերնետում։ Սա նախատեսված է միայն ուսման նպատակների համար։

<?PHP

$user_name = “root”;
$password = “”;
$database = “addressbook”;
$server = “127.0.0.1”;

mysqli_connect($server, $user_name, $password);

print “Connection to the Server opened”;

?>

Պահպանեք Ձեր աշխատանքը և փորձեք այն սերվերի վրա։ Ենթադրում ենք, որ դուք արդեն ունեք Address Book database:

Առաջին չորս տողերը պարզապես սահմանում են փոփոխականները և լրացնում դրանք։

$user_name = “root”;
$password = “”;
$database = “addressbook”;
$server = “127.0.0.1”;
 

Username-ը, որը մենք փորձարկում ենք այստեղ “root” է իսկ password-ի մասը դատարակ։ Սրանք MySQL-ի կողմից տրված default է։ Շատ դեպքերում դրանք փոխելու կարիք չկա։ (Դրանք անհրաժեշտ է փոխել,  եթե աշխատեցնեք այն սերվերի վրա, որը միացված է ինտերնետին)

Հույս ունեք, error-ների չեք հանդիպի։ Ահա այն տողը որ միացնում է MySQL–ին։

mysqli_connect($server, $user_name, $password);

Այսպիսով, առաջինը մուտքագրում եք ֆունկցիայի անունը (mysqli_connect), որին հաջորդում են կլոր փակագծերը: Կլոր փակագծերում, Ձեզ պետք է երեք բան: Ձեր սերվերի անունը, ձեր MySQL username-ը և MySQL password-ը։ Վերջինս կարելի է անել հետևյալ կերպ․

mysqli_connect( ‘127.0.0.1’, ‘root’, ” );

Կամ որպես փոփախական

$user_name = “root”;
$password = “”;
$server = “127.0.0.1”;

mysqli_connect($server, $user_name, $password);

Փորձեք ինքներդ և կտեսնեք հետևյալ ուղերձը՝  Connection to the Server opened

Սակայն կա մի խնդիր՝ Ձեր username և password-ի տվյալները տպագրված են PHP ֆայլի պարզ տեքստի մեջ։ Դա նշանակում է, հակերները կարող են մուտք գործել դեպի այս ֆայլը և գողանալ մանրամասները։

փոխարենը տեղադրեք այս կարևոր ինֆորմացիան առանձին ֆայլում եւ օգտագործեք PHP-ի require և define ֆունկցիան։

Require և Define

Ներկառուցված PHP ֆունկցիա Define-ը սահմանում է կոնստանտները։ Օրինակ՝

define(‘NAME_OF_CAT’, ‘Tiddles’);

Կլոր փակագծերում անհրաժեշտ է ունենալ ձեր կոնստատնի անունը, օրինակ NAME_OF_CAT ստորակետից հետո մուտքագրում եք փոփոխականի արժեքը։ Այժմ կարող եք անել հետևյալը․

if (NAME_OF_CAT == ‘Bob’) {

Print “Wrong cat!”

}

Դուք կստանաք error եթե սահմանեք կոնստանտը հետևյալ կերպ՝

define(‘NAME-OF-CAT’, ‘Tiddles’);

Խնդիրն այն է որ դուք չեք կարող օգտագործել հետևյալը –

Այնպես որ, օգտվողի անունը և գաղտնաբառը մենք կարող ենք սահմանել առանձին ֆայլերում։

Ստեղծեք նոր PHP ֆայլ։ Անվանեք այն configure.php (կա ըստ Ձեր նախընտրության) Ավելացրեք հետևալը որպես կոդ։

<?PHP

define(‘DB_SERVER’, ‘localhost’);
define(‘DB_USER’, ‘root’);
define(‘DB_PASS’, ‘password’);

?>

Այստեղ մենք սահմանել ենք երեք կոնստատներ: DB_SERVER, DB_USER և DB_PASS. Վերջինը այժմ ունի password set։ root և password արժեքները օգտագործվում են phpMyAdmin ներգործելու համար։ Այս պատուհանից

1

Սկզբնապես գաղտնաբառը սովորաբար դատարկ է։ Բայց դուք կարող եք ստեղծել գաղտնաբառ այստեղից։ Սեղմեք GO կոճակը և կտեսնեք հետևյալ էկրանը։

2

Գլխավոր կարգավորումներ բաժնից՝ վերևում՝ General սեղմեք change password։ Մուտքագրեք նոր գաղտնաբառը ինքներդ։ Վստահ եղեք, որ հիշել եք ձեր գաղտնաբառը մտքում, քանի որ այն վերականգնելը դժվար է: Փորձարկման նպատակով կարող եք մուտքագրել պարզ գաղտնաբառը: Սակայն փոխեք գաղտնաբառը ավելի ուժեղի եթե պատրաստվում եք այն արտադրության հանել!

Ահա ինչու define-ը դատարկ տող չէ:

define(‘DB_PASS’, ‘password’);

Փոխել գաղտնաբառը ինչպես վերը նշված phpMyAdmin-ի պատուհանում։

Այժմ երբ ստեղծել եք կոնստանտներ ժամանակն է հիշել ֆայլը։ Խորհուրդ է տրվում չպահել կարևոր տեղեկատվությունները սերվերի root folder-ում։ Սա սովորաբար www folder է։ Պահպանեք այն www folder-ից դուրս։ Այդ դեպքում հաքերների համար ինֆորմացիան դժվար հասանելի կլինի։ Ստորր բերված պատկերում դուք կարող եք տեսնել  www folder-ը և configure.php ֆայլը:

3

Այնպես որ configure-ը ֆայլը www folder-ում չէ։

require keyword-ը PHP-ում նույն է ինչ include-ը, որը օգտագործվում է մեկ այլ ֆայլ կոդում ներառելու համար։ Տարբերությունն այն է, որ require-ը կդադարեցնի script-ը, երբ այն սխալ հայտնաբերի և ցույց կտա նախազգուշացում E_COMPILE_ERROR։ Եթե օգտագործում եք include, ապա script-ը կշարունակի գործեղությունը և ցույց կտա E_WARNING error: Օգտագործում եք այն հետևյալ կերպ:

<?PHP
require ‘somefile.php’;

?>

Նախընտրելի է տեղադրել require-ը վերևում, առանց որևէ դատարկ տողի <?PHP-ից հետո: Դատարկ տողերը երբեմն կարող են առաջացնել սխալներ։

Ահա մի նոր PHP կոդը փորձելու համար

<?PHP
require ‘../configure.php’;

mysqli_connect(DB_SERVER, DB_USER, DB_PASS );

print “Server found” . “<BR>”;

?>

Նկատեք որ require տողը չունի կլոր փակագծեր։ Այսպիսով մենք չենք արել հետևյալը՝

require(‘../configure.php’);

Այնպես որ, մենք չենք օգտագործել կլոր փակագծեր: Այն պատճառով, որ require-ը statement է այլ ոչ թե ֆունկցիա: Ցանկության դեպքում դուք կարող եք օգտագործել կլոր փակագծեր։ Սակայն մենք բաց ենք թողել դրանք շփոթություններից խուսափելու համար։

Մյուս բանը որին պետք է ուշադրություն դարձնել դա ՝ ../ սկզբից: (Մենք օգտագործել ենք այստեղ / սակայն, փորձեք հակառակ տարբերակը նշանի, եթե ստանաք error message) Երկու կետերը և կոտորակի նշանը նշանակում է «գտնել ֆայլը, տեղափոխվել դեպի ուրիշ վայր»:

Քանի որ մենք սահմանել ենք մեր հաստատունները՝ կոնստանտները առանձին configure ֆայլում, ապա կարող ենք օգտագործել դրանք mysqli_connect-ի կլոր փակագծերում։

mysqli_connect(DB_SERVERDB_USERDB_PASS );

Այս ճանապարհով մենք ոչ չենք տեղադրում մեր տվյալները և կոդավորման մանրամասները PHP connection ֆայլում։ Բացի այդ ամեն անգամ չենք մուտքագրում login-ի  տվյալները սերվերին միանալուց։ Պարզապես օգտագործեք require-ը կոդի սկզբում։

Սակայն մենք դեռևս չենք միացել տվյալների բազային։

Հատկորոշեք տվյալների բազան, որը ցանկանում եք բացել։

Նախորդ կոդում մենք ստեղծել փոփոխական մեր տվյալների բազայի անունով:

$database = “addressbook”;

Այսպիսով ավելացրեք այս նոր տող ձեր կոդին (նշված է կապույտ գույնով):

<?PHP
require ‘../configure.php’;

$db_handle = mysqli_connect(DB_SERVER, DB_USER, DB_PASS );

print “Server found” . “<BR>”;

$database = “addressbook”;

$db_found = mysqli_select_db( $db_handle, $database );

if ($db_found) {

print “Database found”;

}

else {

print “Database not found”;

}

?>

Նոր կոդը հետևյալն է

$db_handle = mysqli_connect(DB_SERVER, DB_USER, DB_PASS );

 

Այժմ հավասարության նշանի աջ ունենք mysqli_connect իսկ ձախ մասում՝ նոր փոփոխական, որը մենք անվանում ենք db_handle: Այս փոփոխականը կպահի սերվերի կապը։

Հաջորդ նոր տողը հետևյալն է՝

$db_found = mysqli_select_db($db_handle, $database);

Դուք օգտագործում եք mysqli_select_db () ֆունկցիան  նշելու համար, թե որ տվյալների բազան եք ցանկանում բացել։ Ֆունկցիան ապա վերադարձնում է true/false արժեք: Եթե այն գտնում է տվյալների բազան, արժեքը true է, եթե չի կարող գտնվել, ապա՝ false։ Կլոր փակագծերում անհրաժեշտ է սերվերի կապ (db_handle մեզ մոտ) ինչպես նաև տվյալների բազան, որը ցանկանում եք միացնել: Մենք կիրառել ենք statement $db_found.  արժեքը ստուգելու համար: Թե ինչ հաղորդագրություն կտեսնեք կախված նրանից, թե տվյալների բազան հայտնաբերվել է, թե ոչ:

Այժմ փոխեք database-ի անունը

$database = “addressbook”;

Դարձնելով այն

$database = “addressbook2”;

Աշխատացրեք կոդը կրկին և պետք է արտատպվի հետևյալը Database NOT Found (եթե իհարկե չունեք տվյալների բազա, որը կոչվում է addressbook2): Փոխել բազայի անունը ետ հասցեագրքում:

Այժմ երբ մենք միացած ենք MySQL-ին և տվյալների բազային, դա ժամանակն է փակել կապը:

 Քայլ 3 – Փակեք կապը/ Close the connection

Դա բավականին հեշտ է, եթե օգտագործել եք handle ֆայլը ինչպես վերը նշված օրինակում։

mysqli_close ($ db_handle)

Հակառակ դեպքում խորհուրդ է տրվում  file handle-ը տեղադրել կոդում՝ if statement-ում Database found-ից  անմիջապես հետո։

Հարգելի ընթերցող, խնդրում ենք չմոռանալ like տալ մեր ֆեյսբուքյան էջին, քանի որ նորությունների մեծ մասը առաջինը տեղադրվում է հենց այնտեղ։ Ինչպես նաև հետևեք մեզ այլ սոցիալական ցանցերում և, իհարկե, գրանցվեք մեր բլոգում։

Share.