PHP - somo la 26: Jinsi ya kutengeneza system ya ku chat kw akutumia PHP


image



Katika somo hili utajifunza jinsi ya kutengeneza system ambayo mta atajisajili pamoja na kuchat na watumiaji wengine



Katika somo la 14 umejifunza namna ambavyo unaweza kuongeza taarifa kwenye database kwa kutumia HTML form. Katika somo hili tutakwenda kutengeneza project, kwa ajili ya kuchat public na watu mbalimbali.

 

kabla hatujaendlea na somo hili nataka kwanza nikufahamishe jambo. tambuwa kuwa project hii ni kukupa tu mwangaza kuhusu kutengeneza ukurasa wa kuchat. Tutakwenda kutengeneza system iliyo rahisi sana kulingana na kile tulichokisoma tu. hii itakuwa system rahisi sana, iliyokusudiwa kuonyesha tu namna ambavtyo mambo yanavyokwenda. Tutajifunza kutengeneza system kama hizi zilizo madhubuti katika course itakayofuata ya PHP LEVEL 3.

 

Sehemu kuu za project hii:

Project hii itakuwa katika sehemu kuu 4 yaani itakuwa na mafaili manne. katika mpangilio ufuatao:-

  1. Ukurasa kwa ajili ya kujisajili

  2. Ukurasa kwa ajili ya ku login

  3. Ukurasa kwa ajili ya kutuma na kupokea meseji

  4. ukurasa wa ku logout

 

Hivyo basi system hii itafanya kazi katika kurasa kuu hizo. kwanza mtu atajisajili, baada ya kujisajili atapelekwa kwenye ukurasa wa ku log in, kisha mchakato ukikamlika atapelekwa kwenye dashboard kwa ajili ya kuona meseji zilizotumwa na kutuma na yeye.

 

  1. Kuandaa database

Katika database yetu ya hotel, ingia kwenye uwanja wa SQL kisha pest code hizi kutengeneza table yenye jina users

CREATE TABLE IF NOT EXISTS `users` (

 `id` int(11) NOT NULL,

 `name` varchar(255) NOT NULL,

 `email` varchar(255) NOT NULL,

 `password` varchar(255) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

 

Ingia kwenye seting za table kisha edit id, iweke PRIMARY kisha weka tiki kwenye AI ili kuifanya autoincrement. Rejea mafunzo ya database level 1. Table hii kazi yake ni kuhifadhi taarifa za watumiaji wa system. Kuna id, name kuhufadhi majina, kuna email kwa ajili ya kuhifadhi email zao na password kwa ajili ya kuuhifadhi password za user.

 

Kisha pest code zifuatazo kutengeneza table yenye jina la message hii ni kwa ajili ya kuhifadhi meseji zote zinazotumwa.

CREATE TABLE IF NOT EXISTS `message` (

 `id` int(100) NOT NULL,

 `sms` text NOT NULL,

 `sender` varchar(255) NOT NULL,

 `date` varchar(255) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

 

Table hii ya meseji ina id, sms kwa ajili ya kuhifadhi meseji senyewe, pia kuna sender hili ni jina la aliyetuma hiyo meseji, na date ni kwa ajili ya kuhifadhi tarehe na muda wa hiyo meseji.  

 

 

  1. Ukurasa wa kujisajili (reg.php)

Tengeneza faili liite reg.php kisha pest code hizi

h1><b>Registration form</b></h1>

<form method="post" action="">

   <input type="hidden" name="add" value="1">

   <label>Name</label><br>

   <input type="text" placeholder="Jina lako"  name="name"><br>

   <label>email</label><br>

   <input type="email" placeholder="Weka Email"  name="email"><br>

   <label>Password</label><br>

   <input type="password" placeholder="Weka password "  name="password"><br>

  <input type="submit" value="save">

</form>

 

<?php

$servername = "localhost";

$username = "root";

$password = "";

$dbname = "hotel";

 

 

if(isset($_POST["add"])){

   //prepare variable

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

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

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

   //connect database

   $conn = mysqli_connect($servername, $username, $password, $dbname);

   //insert data in database

   $sql = "INSERT INTO users (name, email, password) VALUES ('$name', '$email', '$pass')";

   if (mysqli_query($conn, $sql)) {

       header("location: login.php");

   } else {

       echo "Error: " . $sql . "<br>" . mysqli_error($conn);

   }

   mysqli_close($conn);

}

 

?>

 

Code hizi hazina utofauti sana na tulizozipitia katika somo lililopita. Ni ukurasa hii ni sawa na ule ukurasa wa kuongeza data kwa kutumia html form. Hap kilichobadilika lamda kwenye user input kuna password na email. mambo mengine yaliobalia ni sawa na kutengeneza form ya ku add data kama tulivyoona katika somo lililopita.

 

Baada ya mchakato huu wa kujisajili kukamilika mtu atapelekwa moja kwa moja kwenye ukurasa wa ku login header("location: login.php") hapo atatakiwa ku log in kwa kutumia name na email.

 

  1. Ukurasa wa ku login (login.php)

Tengeneza ukurasa mwengine wa php na upe jina la login.php. Kisha pest code hizi

<?php error_reporting (E_ALL ^ E_NOTICE); ?>

<?php

 

$servername = "localhost";

$username = "root";

$password = "";

$dbname = "hotel";

 

 

if(isset($_POST["save"])) {

//prepare variable

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

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

$conn = mysqli_connect($servername, $username, $password, $dbname);

$sql = mysqli_query($conn, "SELECT * FROM `users` ");

while($fetch = mysqli_fetch_array($sql)){

   ?>

   <?php

   if ($fetch['name'] == $name & $fetch['password'] == $pass  ){

       header("location: dashboard.php?name=$name");

   }else echo "";

   ?>

<?php }?>

<h1><b>Login form</b></h1>

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

   <input type="hidden" name="save" value="1">

   <label>Name</label><br>

   <input type="text" placeholder="Jina lako"  name="name"><br>

   <label>Password</label><br>

   <input type="password" placeholder="Weka password "  name="password"><br>

   <input type="submit" value="Submit">

</form>

 

 

Hapa kuna vi trick kidogo vimetumika <?php error_reporting (E_ALL ^ E_NOTICE); ?> hii imetumika ili kutuliza PHP kutoa alert meseji za kuonyesha error, kwa maeneo ambayo kuna empty value za variable.

 

Trick iliotumika hapa ku log in ni kwanza tume select user kama tunavyojuwa, pindi tunapotaka kusoma taarifa kwenye database. Baada ya hapo sasa ndipo tunatumia trick kulinganisha, je jina ambalo mtu ameingiza ni sawa na majina ambayo hyapo walau moja wapo?  <?php

   if ($fetch['name'] == $name & $fetch['password'] == $pass  ){

       header("location: dashboard.php?name=$name");

   }else echo "";

   ?>

             

Hapo utaona $fetch['name' ni kwa ajili ya kusoma names hivyo hapo nika tumia alma ya == kusema kuwa kama jina lililopo kwenye datanase ni sasa na jina ambalo mtu ameingine, na kama password iliyopo kwenye database ni sawa na password ambayo mtu ameingiza ukurasa utampeleka kwenye dashoard. Ngoja nikujuze kitu kipya hap

 

header("location: dashboard.php?name=$name");   Hapa kuna function ya header(); Hii ina kazi ya kukuhamisha kwenda ukurasa mwingine au location nyingine ndio maana utaona hapo kuna "location: dashboard.php?name=$name"  kitu kingine hapo nitakujuza kuhusu php parameter. Anga hapo kwenye hiyo link dashboard.php?name=$name  hapo link ya dashboard ni dashboard.php  lakini tunahitaji kubeba baadhi ya taarifa kutoka kwenye ukurasa uu kwenda nazo kwenye ukurasa unaofuata.

 

Kufanya hivi tunahtajika kuongeza parameter kwenye link ytu. Parameter ndio zitakazotusaidia kubeba taarifa hizo. kwa kuwa mtu amesha log in tunahitaji tubebe jina lake tuendenalo kwenye ukurasa unaofuata. Ili kutengeneza parameter utahitajika kuweka alama ya ? kisha unaweka jina la hiyo parameter ikifuatiwa na value yake.

 Kwa mujibu wa link yetu dashboard.php?name=$name link hapa ni dashboard.php na parameter ni name  ambapo value yake ni $name kumbuka hii ni variable ambayo imebeba jina la mtu ambalo ameliingiza wakati analogin.

                

Hivyo basi link yetu itatupeleka kwenye ukurasa wa dashboard.php lakini itakuwa imebeba parameter inayowakilisha jina la mtu wakati analog in. Jina hili litatusaidia kumjuwa ni nani ambaye ametuma meseji.

 

  1. Ukurasa wa dasgboard (dashboard.php)

Tengeneza ukurasa mpya wa php na uite dashboard.php kisha pest code hizi:-

<?php error_reporting (E_ALL ^ E_NOTICE); ?>

<?php

$servername = "localhost";

$username = "root";

$password = "";

$dbname = "hotel";

//connect database

$conn = mysqli_connect($servername, $username, $password, $dbname);

 

//get user name

$user =$_GET['name'];

echo "Welcome $user";

echo "<button style='float: right'> <a href='logout.php'>logout</a></button>";

?>

<?php

$sql = mysqli_query($conn, "SELECT * FROM `message` ");

while($fetch = mysqli_fetch_array($sql)){

?>

<p><?php echo $fetch['sms']; ?> Sent by <?php echo $fetch['sender']; ?> On <?php echo $fetch['date']; ?></p>

<?php

}

?>

 

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

   <input type="hidden" name="add" value="1">

   <textarea name="sms"></textarea>

   <input type="hidden" name="sender" value="<?php echo "$user";?>">

   <input type="hidden" name="date" value="<?php

   date_default_timezone_set("Africa/Nairobi");

   echo  date("Y/m/d/l - h:i:s a");

   ?>">

 

   <br><br><input type="submit" value="Send">

</form>

 

<?php

if(isset($_POST["add"])){

   //prepare variable

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

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

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

   //insert data in database

   $sql = "INSERT INTO message (sms, sender, date) VALUES ('$sms', '$sender', '$date')";

   if (mysqli_query($conn, $sql)) {

       header("location: dashboard.php");

   } else {

       echo "Error: " . $sql . "<br>" . mysqli_error($conn);

   }

   mysqli_close($conn);

}

 

?>

 

 

Code za ukurasa huu hazina utofauti na zile ambazo tumekuwa tukizifanyia kazi katika masomo yaliopita. Kuna za ku connect database kama unavyoona hapo. Sasa nataka kukuonyesha ile taarifa tulioibeba kwenye parameter ya link tunavyoifanyia kazia.

//get user name

$user =$_GET['name'];

echo "Welcome $user";

echo "<button style='float: right'> <a href='logout.php'>logout</a></button>";

?>

 

Kama unavyoona kwenye code hizo hapoTumetengeneza variable ya user $user kwa kuipa thamani ya $_GET['name'] hii $_GET ndio method unayoweza kuchukuwa taarifa kutokakwenye link parameter kwenda kuitumia. Hivyo hapo ndio maana utaona kuna name ndani ya geti. kumaanisha kuwa method ya $_GET imechukuwa jina kutoka kwenye link. baada ya hapo ndipo $user inajipatia thamani kulingana na thamani ya name iliyochukuliwa na $_GET method.

 

Baada ya kupata tjhamani ya $user tunatumia echo kwa ajili sasa ya kusoma jina la huyo user, ambaye thamani yake imechukuliwa kutoka kwenye ukurasa uluopita kwa njia ya parameter. Pai kuna button ya ku logout, ambapo ukiibofya utarudishwa kwenye ukurasa wa ku login.

 

<?php

$sql = mysqli_query($conn, "SELECT * FROM `message` ");

while($fetch = mysqli_fetch_array($sql)){

?>

<p><?php echo $fetch['sms']; ?> Sent by <?php echo $fetch['sender']; ?> On <?php echo $fetch['date']; ?></p>

<?php

}

?>

  

Hizi zimetumika kwa ajili ya kusoma meseji kama unavyoziona hapo, hazina utofauti na zile abazo tumekuwa tukiziona kwenye masomo yaliopita.

 

Baada ya hapo ni html form kwa ajili ya kutuma meseji. Hakuna utofauti mkubwa na form ya kujisajili jinsi zote zinavyofanya kazi. Parameter ya name tulioichukuwa kwa kutumia $_GET method tutaitumia tena hapa ili kutuma jina la aliyetuma meseji.  Tutatumia date function kwa ajili ya kuata muda na lisaa. (Rejea mafunzo ya php level 1)

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

   <input type="hidden" name="add" value="1">

   <textarea name="sms"></textarea>

   <input type="hidden" name="sender" value="<?php echo "$user";?>">

   <input type="hidden" name="date" value="<?php

   date_default_timezone_set("Africa/Nairobi");

   echo  date("Y/m/d/l - h:i:s a");

   ?>">

 

   <br><br><input type="submit" value="Send">

</form>

 

<?php

if(isset($_POST["add"])){

   //prepare variable

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

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

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

   //insert data in database

   $sql = "INSERT INTO message (sms, sender, date) VALUES ('$sms', '$sender', '$date')";

   if (mysqli_query($conn, $sql)) {

       header("location: dashboard.php");

   } else {

       echo "Error: " . $sql . "<br>" . mysqli_error($conn);

   }

   mysqli_close($conn);

}

 

?>

 

  1. Ukurasa wa ku logout (logout.php)

Tengeneza ukurasa mwingine na uuite logout.php kisha pest coe hizi

<?php

header("location: login.php");

?>

 

Hizi ni kwa ajili ya kumpeleka mtu kwenye ukurasa wa ku login.

 

Mpaka kufikia hapa Project yetu itakuwa imekamilika. System hii imekosa vitu vingi sana vya kitaalamu katika maeneo mbalimbali. Hakuna user session na vingine vingi. Nina matumaini kuwa katika mafunzo ya php level 3 utajifunza kwa undani kuhusu system ya ku login. endelea kuna nasi kwenye course nyingine.



Je! umeipenda hii post?
Ndio            Hapana            Save post

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

RELATED POSTS

picha

Katika somo hili unakwenda kujifunza jinsi y kutengeneza database na
picha

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

Katika somo hili utakwenda jifunza jinsi ya kuhesabu row kwenye
picha

katika somo hili utajfunza kukusanya taarifa za mafaili. kisha ku
picha

Katika somo hili utajifunza jinsiya kufanya hashing taarifa muhimu kama
picha

Katika somo hili utakwenda kujifunza jinsi ya kutumia taarifa ambazo
picha

Katika somo hili utakwenda kujifunza jinsi ya kuandika function za
picha

Katika somo hili utakwenda kujifunza jinsi ya kukusanya taarifa za
picha

Katika somo hili utajifunza jinsi ya ku connect database, kwa
picha

Katika somo hili utajifunza jinsi ambavyo unaweza kutengeneza blog ambayo
picha

katika post hii utajifunza jinsi ya kutengeneza ukurasa wa dashboard
picha

Hapa utajifunza jinsi ya kutengeneza table ambayo tutaitumia kwenye blog
picha

Huu ni mwendelezo wa mafunzo ya PHP na hapa tunaaza
picha

Katika somo hili utakwenda kujifundisha jinsi ya kutafuta taarifa maalumu
picha

Katika somo hili utakwenda kujifunza kujusu PHP variable, maana yake
picha

Katika somo hili utakwend kujifunza kuhusu static property na jnsi