PHP - somo la 48: Jinsi ya kuzuia hacking kwenye sytem ya kujisajili na ku login


image



Katika somo hili utajifunza jinsi ambavyo utaweza kutengeneza mfumo wa kuisajiki na ku login, kisha kuangalia usalama wa mfumo kwa kuzuia sql injection.



Katika somo hili utakwenda kujifunza jinsi ya kuzuia injection. Nitakueleza jinsi ambavyo nimefanya mabadiliko ya kiusalama kutoka kwenye somo lililotangulia. Hivyo basi hakikisha umelielewa vyema somo lililotangulia pia uwe umefanyia mazoezi.

 

MABADILIKO YA KIUSALAMA:-

  1. Katika kujisajili

  2. Kwenye login na register form nimeongeza kipengele cha required maana yake kama atatuma empty form itakataa. N ahata akituma kwenye php code hataona chochote maana tumetumia isset()  na empty() tulisha jifunza kuhusu isset() function na inavyofanya kazi. Hi ya empty ni sawa na hii isset.

 

  1. Atakapoanza kujisajili na kutuma data kwanza zitakaguliwa kama ni empty hatapata action yeyote. Endao data zitakuwa zipo kwanza zitaangaliwa ni lazima jina liwe na angalau character 4 kama ni chini ya hapo atapata meseji itakayimtaka aoneze caracter kwenye jina. Endapo jitakuwa ni zaidi ya 4hatuw aitakayofuata ni kuangalia kama password ina character kuanzia 6, endapo zipo chini ya hapo atapata meseji inayomtaka aongeze character. 

 

  1. Endapo zitakuwa kuanzia 6 hatuwa inayofuata ni kuangalia kama email ina character kuanzia 8, endapo zitakuwa pungufu ya hizo atapata ujumbe unaomtaka arekebishe email yake. Endapo zitakuwa kuaznia 8 hatuwa inayofuata ni ku sanitize email. 

 

  1. Tunafanya sanitizing ili kuondoa code ambazo zipo kwenye email ambazo zinaweza kufanya injection. Endapo itafaulu kwenye sanitizing itafanyiwa validation kuona kweli ni email iliyo sawa kimpangilio. Endapo itafeli kwenye validation na sanitizing atapata ujumbe unaohitaji kuangalia vyema email. 

 

  1. Baada ya kukamilika uchunguzi wa email hatuwa nyingine ya muhimu ni kuangalia je mtumiaji mwenye email kama hiyo yupo kwenye database. Endapo email hiyoimeshatumia kaba atapata ujumbe kuwa mtumiaji mwenye email hiyo yupo hivyo abadili email. Kufanya hivi tuta select count(id) ili kuangalia je kuna id ngap zenye email hiyo.kama jibu ni 0 maana yake hakuna hiyo email kwenye databse hivyo ataendelea na usajili. Kuhusu ku count() tulishajifunza kwenye mafunzo ya qsl level 1 na mafunzo ya php level 2.

 

  1. Hatuwa inayofuata ni ku encrypt email baada ya kuwa ipo sawa. Tafadhali  pitia somo la ku encrypt ili upate kuelewa vyema. Email ikiwa encrypted maana yake haitakuwa katika sura ya kawaida. Baada ya ku encrypt email sasa ni muda wa kucheza na jina.  Nimeongeza mafaili mawili ya ecription na decription ili kupunguza kuandika code hizi kila sehemu. Kisha nime include mafaili hayo kila panapohitajika.

 

  1. Jina nalo litapitia hatuwa kama hizo za kusanitize,na ku validate, kisha ku encrypt. Halafu na password yenyewe haina valifdation ili tutaifanyia hashing moja kwa moja. Tulisha zungumzzia somo hili kw aurefu zaidi. Katika njia zilizofundishwa hapa tutatumia password_hash().

 

  1. Kipengele kilichoongezeka ni uniqu_id kwenye column za database. Tofauti na id kutakuwa na uniqu_id ambayo ni string zilizo hashed kwa kutumia sha1(). Hii itatusaidia katika ku view taarifa za user kuwa unique na sio rahisi kujuwa user mwingine.

 

  1. Baada ya hapo tutatumia prepared query kusajili watumiaji wapya kwenye database. Endapo kila kitu kitakuwa sawa basi mtumiaji atapelekwa kwenye ukurasa wa ku login.

 

2. Katika ku login

  1. Kama ilivyo kwenye html formkuna required ni lazima taarifa ziwe zimejazwa. Na hata kama hajajaza tumetumia isset() kuangalia kama ni empty

 

  1. Bada ya hapo hatuwa ya kwanza ni ku sanitize jina na kuvalidate. Endapo itafeli atatakiwa kuangaliajian ikifanikiwa hatuwa ya pili ni ku encrypt jina. Tunafanya hivi ili kwamba tujeweza kulinganisha jina hili na lile ambalo tayari lipo kwenye databse ambalo nalo ni encrypted. Kwakuwa hatuhitaji email ku log in hivyo tumepunguza kazi.

 

  1. Sasa tunatakiwa kwanza tuangalie je kwenye database tuna mtu ama watu wenye jina kama hilo. Kufanya hivi tutatumia count(id) ambazo zina jina kama hilo. Endapo jibu ni 0 maana yake mtumiaji huyo hayupo hivyo ahakikishe jina lake. Ikiwa jibu ni tofauti na 0 maana yke jina hilo lipo.

 

  1. Hatuwa inayofuata ni kuhakikisha password. Kufanyanhivi kw akuwa ndia ya ku hash password tumetumia password_hash() basi ku verify tutatumia password_verify(). Tulisha jifunza habari hii kwenye masomoyaliopita. Endapo passowrd iliyokuwepo kwenye database ni sawa na password hii tulio ihash baada ya mtumiaji kuingiza zipo swa basi taanza ku start session, ili kwenda kwenye log in.

 

  1. Ili kuanzisha session kuna faili jipya nimeongeza ambalo lina function ya kustart session. Faili hili nimeli include mwanzo mwa kila faili.tulisha jifunza kuhusu session katika masomoyaliopita. Session inabeba taarifa ambazo utahitaji zitumike kwenye page za website yako. Kwa mfano kubeba jina la mtumiaji popote alipo kwenye hiyo website. Session yetu hapo inabeba jina na id. Jina kwa ajili ya utambulishi na id kwa ajili ya ku view profile. Function ya kuanzisha session session_start()

 

  1. Kila kitu kikiwa sawa atapelekwa kwenye dash boarda ambayo itamtambuwa kwa session ya jina lake. Kwenye dashboard hakuna mabadiliko makubwa sana. Ila kwa kuwa data zetu tume zi encrypt kwenye database basi hapa tutatikiwa ku decryp ili tuweze kuzisoma vinginevyo hatutazielewa.

 

  1. Mabadiliko mengine yamefanyika kwenye view user kwenye dashboard yako. Kwanza nimetumia .htaccess faili ili kuondoa view.php?id=2 badala yake iwe /2 kisha baada ya kutumia id sasa nimetumia uniqu_id ambayo tumeingez akwenye databse. Hii itasaidia endapo umeshea profile ya mtu basi asiweze kujuwa pfrofile nyinginekwa kubadili id maaba kubadili uniqu_id na kupatia ni sawa na kugesi password.

 

JINSI YA KUANGALIA SESSION

Katika dashboard endapo mtu hajaloh in atakutana na ujumbe utakaomtaka a log in. hapi ni kwa kuwa kwanz atumeangalia je session ipo endapo sesstion ipo basi data zitaonekana vinginevyo ataambiwa login. 

 

Kufanya hivi tutatumia isset() ambapo ndani yake tutaweka session yetu tuliokuja nayo kwenye login. Sasa ili kuangalia kama session haipo tutatumia ! kwa kuwa isset yenyewe inaangalia uwepo na ukiweka ! maana yake unaangalia kinyume chake. Hivyo tutasema endapo hakuna session basi log in vinginevyo onyesha data

if(!isset($_SESSION['username'])):?>

<b><a class="btn btn-primary btn-lg" href="login.php">Login</a></b>

<?php else: ?>

// hapa zinakaa code ambazo zitaonekana kama session ipo

 

Mwisho wa ambapo unahitaji data zionekane kwa mwene session utaeka <?php endif; ?>

Kumaanisha hapa ndipo mwisho wa condition yetu ya IF kwenye isset(). Kwa kufanya hivi pia utaweza kuchaguwa ni user gani aende kwenye page fulani. Kwa mfano unaweza anzisha session yenye user status, ukasema kama status ni 0 basi aende user page na endapo status ni 1 aende kwenye admin page

 

CODE ZOTE HIZI HAPA

Code nimezihost hapa unaweza kuipitia website ila hakikisha unapojisajili hautumii email yako ya ukweli maana hii ni kwa ajilii ya majaribio https://mafunzo-php.epizy.com/ 

 

DATABASE kwenye id usisahau kuweka AI yaani Auto Increment

CREATE TABLE `users` (

  `id` int(11) NOT NULL,

  `username` varchar(50) NOT NULL,

  `email` varchar(50) NOT NULL,

  `password` varchar(255) NOT NULL,

  `status` int(1) NOT NULL,

  `uniqu_id` varchar(255) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

 

INSERT INTO `users` (`id`, `username`, `email`, `password`, `status`, `uniqu_id`) VALUES

(22, 'c/F9XAOt', 'c/F9XAOtwGrr2Du9CWDORw==', 'e6e061838856bf47e1de730719fb2609', 1, '31bd5c8e2ba6cd0dbe9694c3517806da'),

(23, 'f/5nVBQ=', 'f/5nVBSY4Wnr0Dz/RGzM', 'e6e061838856bf47e1de730719fb2609', 1, 'c91dc55703dec21e97a1f14422b7c551'),

(24, 'aftwVAix', 'aftkWg+Y52Dn0D7/RGzM', '$2y$10$fad/ovBL5Ks8C092ixTV4O113JdrpwtSFkQYCzUlCr9k2Wx3SJRN6', 1, '33c6085f77ddec004aeba153fab13bfdeb0872cb'),

(25, 'aftwVAix8Q==', 'aftkWg+pwGrr2Du9CWDORw==', '$2y$10$ONfgN57G1PArvG4u2x6ju.Kgd6qQm.SF1.FJSVvrv4Zpg8VuD0VIC', 1, '90c841e1e74754cd524f5bc012b3f2bf1fb20b96'),

(26, 'ePxhWxc=', 'ePxhWxe+wGr10Ta2QzOPSTJt', '$2y$10$FQgeRwv7h24P7rS.gKi22eXAMPkKX55Xm9QDYclyG94Ek13MYtb5.', 1, 'ba3942282f8a35b325208a7ad7b33277564b787d'),

(27, 'bfVhUhO25Q==', 'bfVhUg63wGrr2Du9CWDORw==', '$2y$10$unD8wsT1lV2WUd9mqKJC/OT//urWXij/eJc6yboMNu7yn02M73vnS', 1, 'b18d6b961917d9e0e3791b7b1d35df75e3d9b114');

 

MUINEKANO WA MAFAILI YOTE:

 

  1. config.php

<?php

$servername = "localhost";

$username = "root";

$password = "";

$dbname = "sql";

// Kufanya connection

$conn = new mysqli($servername, $username, $password, $dbname);

 

// Kuangalia connection

if (mysqli_connect_error()) {

   die("you are not connected: ");

}

?>

 

  1. dashboard.php

<?php

include 'config.php';

include 'session.php';

?>

<html lang="en">

<head>

   <meta charset="utf-8">

   <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

   <link rel="icon" href="favicon.ico">

   <title>Dashboard</title>

</head>

<body>

<?php

//kwa ajili ya kuangalia kama session imeanzishwa

if(!isset($_SESSION['username'])):?>

<b><a class="btn btn-primary btn-lg" href="login.php">Login</a></b>

<?php else: ?>

<?php include 'menu.php';?>

<?php

   $name = $_SESSION['username'];

   echo "Karibu"." ". $name;

?>

<table>

   <th>ID</th>

   <th>name</th>

   <th>Email</th>

   <th>View</th>

   <?php

   $myId =$_SESSION['id'];

   $status = 1;

   //select user wote wenye Id isiyofanana na yako. Kwa maana jna lako halitakuwepo kwenye list.

   //pia user ambaye ststus yake ni tofauti na 1 hatokuwepo kwenye list. Unaweza kutumia njia hii kuselect user maalumy

   $sql = $conn->prepare("SELECT * FROM users where id!=? and status =?");

 

   //s ni string, i ni int

   $sql->bind_param("ii",$myId, $status);

   $sql->execute();

   $result = $sql->get_result();

   while ($row =$result->fetch_assoc())

   {

       ?>

       <tr>

           <td><?php echo $row['id']; ?></td>

           <td><?php

               //decrypting jina

               $data = $row['username'];

               include 'decription.php';

                echo $decryption; ?>

           </td>

 

           <td><?php

               //decrypting email

               $data = $row['email'];

               include 'decription.php';

               echo $decryption; ?></td>

           <td><a href="<?php echo $row['uniqu_id']; ?> ">view</a> </td>

       </tr>

    <?php

   }

?>

</table>

<?php endif; ?>

</body>

</html>

 

  1. decryptio.php

<?php

 

$options = 0;

 

$cipher = "AES-128-CTR";

 

$decryption_iv = '1234567891011121';

 

$key = "Bong_cc293";

 

$decryption=openssl_decrypt ($data, $cipher,

   $key, $options, $decryption_iv);

 

  1. encrypt.php

<?php

//encrypt user id

$cipher = "AES-128-CTR";

 

$iv = openssl_cipher_iv_length($cipher);

$options = 0;

 

$encryption_iv = '1234567891011121';

 

$key = "Bong_cc293";

 

$encryption = openssl_encrypt($data, $cipher,

   $key, $options, $encryption_iv);

 

?>

 

  1. index.php

<html lang="en">

<head>

   <meta charset="utf-8">

   <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

   <title>Login form</title>

   <link rel="icon" href="favicon.ico">

   <link rel="stylesheet" href="bootstrap.css">

   <link rel="stylesheet" href="style.css">

</head>

<body>

<h1 style="text-align: center">LOGIN AND REGISTRATION SYSTEM</h1>

<label></label>

<a href="login.php">

<button class="butn">Login</button></a><br><br>

<label></label>

<a href="register.php">

<button class="butn">Register</button></a><br><br>

<p style="text-align: center"><i >With love from <a href="https://bongoclass.com">Bongoclass</a> </i></p>

</body>

</html>

 

  1. login.php

 

<html lang="en">

<head>

   <meta charset="utf-8">

   <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

   <title>Login form</title>

   <link rel="stylesheet" href="bootstrap.css">

   <link rel="stylesheet" href="style.css">

   <link rel="icon" href="favicon.ico">

</head>

<body>

<br><br>

 

<form method="post" action="login-script.php">

   <label for="name">User Name</label>

   <input type="text" id="name" placeholder="write your name" name="name" required="required"><br><br>

 

   <label for="password">Password</label>

   <input type="text" id="password" placeholder="write your password" name="password" required="required"><br><br>

 

   <label></label>

   <input type="submit" value="Login" name="login"><br><br>

   <p>You don't have an Account? <a href="register.php">Register</a> </p>

</form>

</body>

</html>

 

  1. login-script.php

<html lang="en">

<head>

   <meta charset="utf-8">

   <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

   <title>Login form</title>

   <link rel="icon" href="favicon.ico">

   <link rel="stylesheet" href="bootstrap.css">

   <link rel="stylesheet" href="style.css">

   <style>

       b{text-align: center;

           color: red;

           font-family: "system-ui";

           font-size: 250%;

       }

   </style>

</head>

<body>

<?php

include 'config.php';

include 'session.php';

if (isset($_POST['login']) && !empty($_POST['login'])) {

//prepare variable

   $name = ($_POST['name']);

   $password = ($_POST['password']);

   $status = 1;

 

//uchujwaji wa jina au sanitization

//name2 ni jina ambalo limefanyiwa sanitization

   $name2 = filter_var($name, FILTER_SANITIZE_STRING);

   //uthibitishwaji wa jina au validation

   if (preg_replace('/[A-Za-z0-9-_]/', '', $name2)) {

       echo "<b>Andika jina vizuri</b>";

   } else {

       //ecrypt jina

       $data = $name2;

       include 'encrypt.php';

       //name3 ni jina ambalo tayari encrypted

       $name3 = $encryption;

 

       //Angalia kama jina alioweka mtumiji lipo kwenye database

       //tutatumia njia ya kuhesabu, kama itatoka 0 maana yake jina hilo halipo kabisa

       //tutaselect solumn zote ambazo tunazihitaji hapa

       $sql = $conn->prepare("SELECT count(id) as total_user, username, password, id, email FROM users where username = ?");

       //s ni string, i ni int

       $sql->bind_param("s", $name3);

       $sql->execute();

       $result = $sql->get_result();

       while ($row = $result->fetch_assoc()) {

           //varibale kutokana na data tulizozipata kwenye database

           $total_user = $row['total_user'];

           $userId = $row['id'];

           $username = $row['username'];

           $email = $row['email'];

           $saved_password = $row['password'];

 

           //hesabu kama kuna watumiaji wenye jina hilo.

           // Ikiwa ni sawa sawa na 0 maana hakuna mtumiaji huyo

           if ($total_user == 0) {

               echo "<b>Umekosea jina, hakuna mtumiaji huyo</b>";

           } else {

               if (password_verify($password, $saved_password)) {

                   //Anzisha session hapa. Tutakuwa na session ya Id na session ya Username

                   //ya Id itatupa thamani ya id ya myumiaji popote pale itakapotumika

                   //ya username itatupa jina la mtumiaji popote pale itakapotumika

                   $_SESSION['id'] = $userId;

                   $_SESSION['username'] = $name;

 

                   //echo "You welcome". $_SESSION['username'];

                   //endapo login ipo sawa utapelekwa kwenye dashboard

                   header("location: dashboard.php");

               } else echo "<b>Umekosea password</b>";

           }

       }

 

   }

}

 

  1. logout.php

<?php

//Start the session

session_start();

 

session_destroy();

header("location: login.php");

 

  1. menu.php

<link rel="stylesheet" href="bootstrap.css">

<link rel="stylesheet" href="style.css">

<div id='cssmenu'>

   <menu style="background-color:violet">

       <a href="index.php"><button><b style="color: black"> Home</b></button></a>

       <a href="profile.php"><button><b style="color: black"> Profile</b></button></a>

       <a href="dashboard.php"><button><b style="color: black"> users</b></button></a>

       <a href="logout.php"><button><b style="color: black"> logout</b></button></a>

   </menu>

</div>

 

9. reg-script.php

<html lang="en">

<head>

   <meta charset="utf-8">

   <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

   <title>Registration form</title>

   <link rel="icon" href="favicon.ico">

   <link rel="stylesheet" href="bootstrap.css">

   <link rel="stylesheet" href="style.css">

   <style>

       b{text-align: center;

           color: red;

           font-family: "system-ui";

           font-size: 250%;

 

       }

   </style>

</head>

<body>

<?php

include 'config.php';

if (isset($_POST['register']) && !empty($_POST['register'])) {

//prepare variable

   $name = ($_POST['name']);

   $email = ($_POST['email']);

   $password = ($_POST['password']);

//hash password kwa kutumia md5()

   $hashed_password = password_hash($password, PASSWORD_DEFAULT);

 

//status ya mtu anayejisajili ni 1

   $status = 1;

 

//unique Id kwa kila mtumiaji.

   $uid = sha1(uniqid());

 

//angalia kama jina lina character kuanzia 4

   $name_length = strlen($name);

   if ($name_length < 4) {

       echo "<b>Jina fupi sana, weka kunzia herufi 4</b>";

   } else {

 

       //angalia kama password ina character kuanzia 6

       $password_length = strlen($password);

       if ($password_length < 6) {

           echo "<b>password fupi sana, weka kunzia herufi au namba  6</b>";

       } else {

 

//Angalia kama email imefika character 6 vinginevyo email hiyo sio sahihi

           //angalia kama jina lina character kuanzia 4

           $email_length = strlen($email);

           if ($email_length < 8) {

               echo "<b>Hakikisha Email yako, angalau iwe na character 8</b>";

           } else {

// Uchujwaji wa emil (sanitizing)

               $email2 = filter_var($email, FILTER_SANITIZE_EMAIL);

 

// uthibitishwaji wa email (validating)

               if (filter_var($email2, FILTER_VALIDATE_EMAIL) === false) {

                   echo("<b>email haipo sawa</b>");

               } else {

                   //ecrypt email

                   $data = $email2;

                   include 'encrypt.php';

                   $email3 = $encryption;

 

                   //uchujwaji wa jina au sanitization

                   $name2 = filter_var($name, FILTER_SANITIZE_STRING);

 

                   //uthibitishwaji wa jina au validation

                   if (preg_replace('/[A-Za-z0-9-_]/', '', $name2)) {

                       echo "<b>Andika jina vizuri</b>";

                   } else {

                       //ecrypt jina

                       $data = $name2;

                       include 'encrypt.php';

                       $name3 = $encryption;

 

                       //Angalia kama jina tayari lipo kwenye database.

                       $sql = $conn->prepare("SELECT count(id) as count FROM users where username = ?");

 

                       //s ni string, i ni int

                       $sql->bind_param("s", $name3);

                       $sql->execute();

                       $result = $sql->get_result();

 

                       while ($row = $result->fetch_assoc()) {

                           $count = $row['count'];

                           if (!$count > 0) {

 

                               //Angalia kama email tayari ipo kwenye database.

                               $sql = $conn->prepare("SELECT count(email) as email FROM users where email = ?");

 

                               //s ni string, i ni int

                               $sql->bind_param("s", $email3);

                               $sql->execute();

                               $result = $sql->get_result();

                               while ($row = $result->fetch_assoc()) {

                                   $count = $row['email'];

                                   if (!$count > 0) {

 

                                       //kusajili mtumiaji mpya

                                       // tutatumia njia ya parametarization ili kuzuia injection

                                       $sql = $conn->prepare("INSERT INTO users (username, email, password, status, uniqu_id) VALUES (?,?,?,?,?)");

 

                                       //s ni string, i ni int

                                       $sql->bind_param("sssis", $name3, $email3, $hashed_password, $status, $uid);

                                       $sql->execute();

                                       header("location: login.php");

                                   } else echo "<b>Mtumiajii mwenye email hiyo tayari yupo, tafadhali tumia email nyingine</b>";

                                   //ikiwa mtumiaji yupo mwenye jina hilo

                               }

                           } else echo "<b>Mtumiaji mwenye jina hilo yupo, tafadhali chaguwa jina lingine</b>";

                       }

                   }

               }

           }

 

       }

   }

}

 

 

  1. register.php

<html lang="en">

<head>

   <meta charset="utf-8">

   <link rel="stylesheet" href="bootstrap.css">

   <link rel="stylesheet" href="style.css">

   <link rel="icon" href="favicon.ico">

   <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

   <title>Registration form</title>

</head>

<body>

<br><br>

<form method="post" action="reg_script.php">

   <label for="name">User Name</label>

   <input type="text" id="name" placeholder="write your name" name="name" required="required"><br><br>

 

   <label for="email">Email</label>

   <input type="email" id="email" placeholder="write your email" name="email" required="required"><br><br>

 

   <label for="password">Password</label>

   <input type="password" id="password" placeholder="write your password" name="password" required="required"><br><br>

<label></label>

   <input type="submit" value="Register" name="register"><br><br>

   <p>Do you have an Account? <a href="login.php">Login</a> </p>

</form>

</body>

</html>

 

  1. session.php

<?php

//Start the session

session_start();

 

  1. style.csss

 

* {

   box-sizing: border-box;

}

 

label {

   padding: 12px 12px 12px 0;

   width: 20%;

   display: inline-block;

   text-align: right;

}

 

input[type=text], [type=email],[type=password],[type=submit] {

   width: 70%;

   padding: 12px;

   border: 1px solid #ccc;

   border-radius: 4px;

   resize: vertical;

}

 

input[type=submit] {

   background-color: #424ef5;

   color: white;

   padding: 12px 20px;

   border: none;

   border-radius: 4px;

   cursor: pointer;

}

.butn{

   background-color: #424ef5;

   color: white;

   border-radius: 4px;

   cursor: pointer;

   width: 70%;

   padding: 12px;

   border: 1px solid #ccc;

   resize: vertical;

}

 

input[type=submit]:hover {

   background-color: #45a049;

}

 

@media screen and (max-width: 600px) {

   .col-25, .col-75, input[type=submit] {

       width: 100%;

       margin-top: 0;

   }

}

form {

   text-align: center;

}

table {

   width: auto;

   border-collapse: collapse;

   margin: 10px auto;

}

th,

td {

   height: 50px;

   vertical-align: center;

   border: 1px solid black;

}

 

  1. view.php

<?php

include 'config.php';

include 'session.php';

?>

<html lang="en">

<head>

   <meta charset="utf-8">

   <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

   <link rel="icon" href="favicon.ico">

   <title>Dashboard</title>

</head>

<body>

 

<?php

if(!isset($_SESSION['username'])):?>

<b><a class="btn btn-primary btn-lg" href="login.php">Login</a></b>

<?php else: ?>

   <?php

   $username = $_SESSION['username'];

   //sanitize parameter inayotoka kwenye url

   $id = $_GET['id'];

   ?>

   <?php include 'menu.php';?>

   <table>

       <?php

       //connection na database

       $sql = $conn->prepare("SELECT * FROM users where uniqu_id=?");

 

       //s ni string, i ni int

       $sql->bind_param("s",$id);

       $sql->execute();

       $result = $sql->get_result();

       while ($row =$result->fetch_assoc()) {

           ?>

           <tr><th>Id<td><?php echo $row['id']; ?></td></th></tr>

           <tr>

               <th>Name</th>

                 <td>

                   <?php

                   //decrypting email

                   $data = $row['username'];

                   include 'decription.php';

                   echo $decryption;

                   ?>

               </td>

           </tr>

 

           <tr>

               <th>Email</th>

                   <td>

                       <?php

                          //decrypting email

                          $data = $row['email'];

                          include 'decription.php';

                          echo $decryption;

                       ?>

                   </td>

           </tr><?php

       }?>

   </table>

 

<?php endif; ?>

</body>

</html>

 

 

MWISHO:

 Na huu ndio mwisho wa course yetu ya mafunzo ya php level 3. Katika mafunzo haya tumefanikiwa kutengeneza blog pamoja na system ya ku log in na ku register. Kwenye project yetu kuu tutaunganisha system zote hizi mbili. Ila mpaka kufikia hapa coure imekamilika kwa neema za Mwenyezi Mungu. Mafunzo haya ni mwanzo tu kuna mengi tunahitaji kujifunza, ikiwepo ishu za security na kadhalika. Hivyo basi tuna nia ya kuendeleza course hii kwenye advanced php.



Je! umeipenda hii post?
Ndio            Hapana            Save post

Imeandikwa na Rajabu Terehe 2023-10-19 Download PDF Share on facebook WhatsApp

RELATED POSTS

picha

Katika somo hili utajifunza jinsi ya kutengeneza system ambayo mta
picha

Katika somo hili utakwenda kujifunza kuhusu access modifier ili kuweza
picha

Katika somo hili utakwenda kujifunza jinsi ya kusoma muda kama
picha

Katika somo hili utakwenda kujifunza kuhusu aina za loop DO,
picha

Katika somo hili utajifunza jinsi ya kuingiza data kwenye dtabase
picha

Katika somo hili utakwenda jifunza jinsi ya kuhesabu row kwenye
picha

Katika somo hili utakwenda kujifunza concept mpya ya abstract class
picha

Katika somo hili tutakwenda kujifunza kuhusu array kwenye php, na
picha

Katika somo hili utakwenda kujifundisha kuhus matumizi ya function kwenye
picha

Katika somo hili tutakwenda kutumia prepared ststement kwenye ku fetch
picha

Katika somo hili utakwenda kujifunza jinsi ya kuandika constant kwenye
picha

Katika somo hili utakwend kujifunza kuhusu static property na jnsi
picha

Katika somo hili utajifnza jinsi ya kufanya prepared statement kama
picha

Katika somo hili utakwenda kujifunza kuhusu condition statements if, ifelse
picha

Katika somo hili utakwenda kujifunza jinsi ya kuandika function za
picha

Katika post hii utakwenda kujifunza jinsi ya kutuma email kwa