PROJECT 10 SIMPLE SECURE PHP LOGIN REGISTRATION SYSTEM KWA KUTUMIA PHP NA MySQL DATABASE

Hii ni project yetu ya mwisho kwenye mafunzo ya php level 3. katika project hii utakwenda kujifunza jinsi ya kutengeneza login na registration system kwa kutumia PHP.

Ili kuelewa vyema mfumo huu tafadhali pitia somo la 21 la mafunzo ya PHP level 3. kwani project hii ni muendelezo wa project kama hii ambayo haikuwa serure hivyo ilikuwa ni rahisi ku hack.

 

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>

 

 





Kimeandikwa na Rajabu Terehe 2023-03-01