You are on page 1of 11

05.

Ushtrime – Aksesimi i MYSQL permes PHP ZGJIDHJE

Ushtrimi 1
Konsideroni ushtrimin te dhene tek seminari Forms, ku jepet forma e meposhtme:

Te realizohen validimet e formes ne momentin e klikimit te butonit Regjistrohu si ne vijim:

o Te testohen nese fushat jane te plotesuara apo jo dhe te shfaqen mesazhet perkatese te
gabimit. Te gjithe fushat jane te detyrueshme te plotesohen, sikurse edhe klikimi i checkbox
per pranimin e kushteteve dhe afatateve.
o Te parashikohen kontrolli i emailit si edhe i fjalekalimit i cili duhet te kete jo me pak se 8
karaktere nga te cilat minimumi 1 germe te medha, 1 numer dhe 1 karakter special.
o Te kontrollohet nqs fjalekalimi perputhet ne te dyja fushat (Fjalekalimi dhe Konfirmimi I
fjalekalimit)dhe te shfaqet mesazhi perkates.
o Gjithashtu Emri dhe Mbiemri duhet te permbaje vetem germa dhe nuk duhet te jene
me gjatesi me te madhe se 25 karaktere.

Ne vijim te ushtrimit te mesiperm ndertoni bazen e te dhenave qe permban tabelen Llogaria e cila ka
keto fusha (id, emri, mbiemri, mosha, gjinia, email, fjalekalimi, dita_regjistrimit).

 Te realizohet regjistrimi i perdoruesve te rinj ne database ne mometin e klikimit te butonit “Regjistrohu”


si edhe te njoftohen respektivisht nqs regjistrimi u krye me sukses apo jo.
Kini parasysh qe fjalekalimi te ruhet i enkriptuar duke perdorur funksionin sha1().

C2 General
Registrimi.php
<html>
<head> <title> Regjistrimi </title>
<body>
<div style="margin:20px">
<p style="font-weight:bold">Regjistrohuni tani duke plotesuar formen e meposhtme:</p>
<form action="regjistrimidb.php" method="post">
Emri: <input type="text" name="emri"/><br/><br/>
Mbiemri: <input type="text" name="mbiemri"/><br/><br/>
Mosha: <select name="mosha">
<option value="">--Zgjidhni moshen--</option>
<option><18</option>
<option>18-25</option>
<option>26-35</option>
<option>36-45</option>
<option>>45</option>
</select><br/><br/>
Gjinia:
<input type="radio" name="gjinia"
<?php if (isset($gjinia) && $gjinia=="femer") echo "checked";?>
value="Femer">Femer
<input type="radio" name="gjinia"
<?php if (isset($gjinia) && $gjinia=="mashkull") echo "checked";?>
value="Mashkull">Mashkull<br/><br/>
E-mail: <input type="text" name="email" /><br /><br/>
Fjalekalimi: <input type="password" name="fjalekalimi" /><br /><br/>
Konfirmimi i Fjalekalimit: <input type="password" name="konf_fjalekalimi" /><br /><br/>
<input type="checkbox" name="kushtet" value="Yes" /> Une pranoj kushtet dhe afatet e
regjistrimit<br><br>

<input type="submit" value="Regjistrohu" name="submit">


</form>
</div>
</body> </html>

Regjistrimidb.php
<!DOCTYPE html>
<html>
<head>
<meta charset = "utf-8">
<title>Rezultatet e Kerkimit</title>
<style type = "text/css">
body { font-family: sans-serif;

C2 General
background-color: lightyellow; }
table { background-color: lightblue;
border-collapse: collapse;
border: 1px solid gray; }
td { padding: 5px; }
tr:nth-child(odd) {
background-color: white; }
</style>
</head>
<body>
<?php
//Validimi i formes
if(isset($_POST['submit'])){
$emri=$_POST['emri'];
$mbiemri=$_POST['mbiemri'];
$mosha=$_POST['mosha'];
$gjinia=$_POST['gjinia'];
$email=$_POST['email'];
$fjalekalimi=$_POST['fjalekalimi'];
$konf_fjalekalimi=$_POST['konf_fjalekalimi'];
$error='';
$errors=array();
//nese form eshte submitted atehere validohen fushat input $error =false;
if(strlen($emri)>25 || preg_match('@[0-9]@', $emri))
{
$errors['emri']='Emri nuk duhet te kete me shume se 25 karaktere dhe nuk duhet te permbaje
numra. Ju lutem vendoseni dhe njehere.';
$error=true;
}
if(empty($emri))
{
$errors['emri']='Ju lutem plotesoni emrin.';
$error=true;
}
if(strlen($mbiemri)>25 || preg_match('@[0-9]@', $mbiemri))
{
$errors['mbiemri']='Mbiemri nuk duhet te kete me shume se 25 karaktere dhe nuk duhet
te permbaje numra. Ju lutem vendoseni dhe njehere.'; $error=true;
}
if(empty($mbiemri))
{
$errors['mbiemri']='Ju lutem plotesoni mbiemrin.';
$error=true;
}
if(empty($email))

C2 General
{
$errors['email']='Ju lutem plotesoni adresen e email-it';
$error=true;
}
if (!filter_var($email, FILTER_VALIDATE_EMAIL))
{
$errors['email']='Email jo i sakte, kthehuni per ta korigjuar.';
$error=true;
}

if ($mosha=='') {
$errors['mosha']='Ju lutem zgjidhni moshen.';
$error=true;
}
$uppercase=preg_match('@[A-Z]@',$fjalekalimi);
$lowercase=preg_match('@[a-z]@',$fjalekalimi);
$numer=preg_match('@[0-9]@',$fjalekalimi);
$karakterspecial=preg_match('@[?=.*?[#?!$%^&*-]@',$fjalekalimi);
if(!$uppercase || !$lowercase || !$numer || !$karakterspecial || strlen($fjalekalimi)<8)
{
$errors['fjalekalimi']='Fjalekalimi nuk eshte i sakte. Ai duhet te permbaje jo me pak se 8
karaktere nga te cilat minimumi 1 germe te medha, 1 numer dhe 1 karakter special.';
$error=true;
}
if(empty($fjalekalimi))
{
$errors['fjalekalimi']='Ju lutem plotesoni fjalekalimin.';
$error=true;
}
if(empty($konf_fjalekalimi))
{
$errors['konf_fjalekalimi']='Ju lutem plotesoni konfirmimin e fjalekalimit.';
$error=true;
}
if ($konf_fjalekalimi != $fjalekalimi)
{
$errors['fjalekalimi']='Fjalekalimi nuk perputhet! Ju lutem rishkruani edhe njehere fjalekalimin.';
$error=true;
}
if(!isset($_POST['kushtet']) || $_POST['kushtet'] != 'Yes')
{
$errors['kushtet']='Per te plotesuar regjistrimin ju duhet te pranoni kushtet dhe afatet.';
$error=true;
}
if(empty($_POST["gjinia"]))

C2 General
{
$errors['gjinia']='Ju lutem zgjidhni gjinine.';
$error=true;
}
if(!empty($errors))

{ foreach($errors as $value)
echo $value."<br/>";
}
else
{
$db_host = 'localhost';
$db_name = 'Llogaria_db';
$db_user = 'root';
$db_pass = '';
$con = mysqli_connect($db_host, $db_user, $db_pass);
if(!$con)
die( "Lidhja me bazen e te dhenave nuk mund te kryhet." .mysqli_error(). "</body></html>" );

$db_select=mysqli_select_db( $con,$db_name );

if ( !$db_select )
die( "Baza e te dhenave nuk mund te hapet:".mysqli_error(). "</body></html>");

$query = "INSERT INTO Llogaria (Emri, Mbiemri, Mosha, Gjinia, Email,Fjalekalimi,Dt_Regjistrimi)


VALUES ('$emri', '$mbiemri', '$mosha','$gjinia','$email',SHA1('$fjalekalimi'), NOW() )";

$result = mysqli_query ($con,$query); // Run the query.

if ($result) {
echo '<h1>Regjistrimi u krye me sukses! Faleminderit!</h1>
<br />';
}
else
{
echo '<p class="error">Regjistrimi nuk mund te kryhet per arsye
teknike!</p>'; echo '<p>' . mysqli_error($con) . '<br /><br />Query: ' . $query .
'</p>'; }
mysqli_close($con);
exit();
}
}
?>

C2 General
 Te ndertohet forma e cila u jep mundesi perdorueve te afishojne te dhenat per te regjistruarit duke
zgjedhur gjinine dhe moshen dhe te afishohen ne nje tabele te dhenat e tjera si Emri, Mbiemri dhe Email-
i).

Mysqlconnect.php
<?php

$db_host = 'localhost';
$db_name = 'Llogaria_db';
$db_user = 'root';
$db_pass = '';

if(!$con = mysqli_connect($db_host, $db_user, $db_pass))

die( "Lidhja me bazen e te dhenave nuk mund te kryhet." .mysql_connect_error(). "</body></html>" );

if ( !mysqli_select_db( $con,$db_name ) )

die( "Baza e te dhenave nuk mund te hapet:".mysql_error(). "</body></html>"); ?>

Afishimidb.php
<!DOCTYPE html>
<html>
<head>
<meta charset = "utf-8">
<title>Afisho te regjistruarit</title>
</head>
<body>

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

<p style="color:red; font-weight: bold">Afisho te dhenat per te regjistruarit:</p>


<!-- add a select box containing options for SELECT query -->
Mosha: <select name="mosha">
<option value="">--Zgjidhni moshen--</option>
<option><18</option>
<option>18-25</option>
<option>26-35</option>
<option>36-45</option>
<option>>45</option>
</select><br/><br/>

Gjinia:
<input type="radio" name="gjinia"
<?php if (isset($gjinia) && $gjinia=="femer") echo "checked";?> value="Femer">Femer

<input type="radio" name="gjinia"

<?php if (isset($gjinia) && $gjinia=="mashkull") echo "checked";?>


value="Mashkull">Mashkull<br/><br/>
<p><input type = "submit" value = "Kerko" name="kerko"></p>

</form>

<?php
if(isset($_POST['kerko']))
{
$mosha=$_POST['mosha'];
$gjinia=$_POST['gjinia'];
require ('mysql_connect.php'); // Connect to the db.

// Make the query:


if($mosha!='' && !empty($gjinia))
{
$q = "SELECT CONCAT(emri, ', ', mbiemri) AS emri, DATE_FORMAT(Dt_Regjistrimi, '%M %d, %Y') AS
dr, mosha, gjinia, email FROM Llogaria where gjinia='".$gjinia."' and mosha='".$mosha."' ORDER BY
Dt_Regjistrimi ASC";
}
else $q="select CONCAT(emri, ', ', mbiemri) AS emri, DATE_FORMAT(Dt_Regjistrimi, '%M %d, %Y') AS dr,
mosha, gjinia, email FROM Llogaria ORDER BY Dt_Regjistrimi ASC";

C2 General
$r = mysqli_query($con,$q); // Run the query.

// Count the number of returned rows:

$num = mysqli_num_rows($r);
if ($num > 0) { // If it ran OK, display the records.
// Print how many users there are:
echo "<p>Ne tabelen Logaria ka $num te regjistruar qe perputhet/en me kriteret e kerkimit. </p>\n";
// Table header.

echo '<table align="center" cellspacing="3" cellpadding="3" width="75%">


<tr><td align="left"><b>Emri Mbiemri</b></td><td align="left"><b>Gjinia</b></td><td
align="left"><b>Mosha</b></td><td align="left"><b>Email</b></td><td align="left"><b>Data e
Regjistrimit</b></td></tr>';

// Fetch and print all the records:


while ($row = mysqli_fetch_array($r)) {
echo '<tr><td align="left">' . $row['emri'] . '</td><td align="left">' . $row['gjinia'] . '</td><td
align="left">' . $row['mosha'] . '</td><td align="left">' . $row['email'] . '</td><td align="left">' . $row['dr']
. '</td></tr>';
}
echo '</table>'; // Close the table.
mysqli_free_result($r); // Free up the resources.
} else { // If no records were returned.
echo '<p class="error">Ne tabelen LLogaria nuk ka te regjistruar qe perputhet/en me kriteret e
kerkimit.</p>';
mysqli_close($con); // Close the database connection.
}
}
?>
</body>
</html>

Te kihet parasysh diferenca:


 $row = mysql_fetch_row($query_result) - kthen si rezultat nje vektor numerik qe mban rezultatin e
query-se. Aksesohen: $row[1]…

 $row = mysql_fetch_assoc($query_result) - kthen si rezultat nje vektor te asociuar, si celesa te se cilit


jane emrat e kolonave te tabeles perkatese. Aksesohet: $row[„column_name‟]

 $row = mysql_fetch_array($query_result) – nje kombinim i dy funksioneve te mesiperme. Celesat jane


ose stringje, ose numerik, pra mund te aksesohet vlerat ne te dy format: $row[„column_name‟] ose
$row[0].

C2 General
 Te ofrohet mundesia e ndryshimit te fjalekalimit dhe te perditesohet ne bazen e te dhenave.

password.php

<!DOCTYPE html>

<html>
<head>

<meta charset = "utf-8">


<title>Afisho te regjistruarit</title>

</head>
<body>
<h1>Ndrysho Fjalekalimin tend</h1>
<form action="password.php"method="post">
<p>Adresa email: <input type="text"name="email"size="20"maxlength="60"value="<?php if
(isset($_POST['email'])) echo $_POST['email']; ?>" /></p>
<p>Fjalekalimi aktual: <input type="password"name="pass"size="10"maxlength="20"value="<?php if
(isset($_POST['pass'])) echo $_POST['pass']; ?>" /></p>
<p>Fjalekalimi i ri: <input type="password"name="pass1"size="10"maxlength="20"value="<?php if
(isset($_POST['pass1'])) echo $_POST['pass1']; ?>" /></p>
<p>Konfirmo fjalekalimin e ri: <input
type="password"name="pass2"size="10"maxlength="20"value="<?php if (isset($_POST['pass2'])) echo
$_POST['pass2']; ?>" /></p>
<p><input type="submit"name="submit"value="Ndrysho fjalekalimin"/></p>
</form>
<?php
// Check for form submission:
if(isset($_POST['submit']))
{
require ('mysql_connect.php'); // Connect to the db.
$e = trim($_POST['email']);
$p = trim($_POST['pass']);
$newpass=trim($_POST['pass1']);

C2 General
$newpass_konf=trim($_POST['pass2']);
$errors = array(); // Initialize an error array.
$error='';

// Check for an email address:


if (empty($e)) {
$errors['email'] = 'Ju harruat te plotesonit email.';
$error=true;
}

// Check for the current password:


if (empty($p)) {
$errors['fjalekalimi'] = 'Ju harruat te plotesonit fjalekalimin aktual';
$error=true;
}
// Check for a new password and match
// against the confirmed password:
if (!empty($newpass)) {
if ($newpass != $newpass_konf) {
$errors['fjalekalimi'] = 'Fjalekalimi i ri nuk perputhet me fjalekalimin e konfirmuar';
$error=true;
}
}
else {
$errors['fjalekalimi'] = 'Ju harruat te plotesonit fjalekalimin e ri';
$error=true;
}

if ($error!=true) { // If everything's OK.

$converted_pass=SHA1($p);
$newconverted_pass=SHA1($newpass);
// Check that they've entered the right email address/password combination:
$q = "SELECT id FROM llogaria WHERE (email='$e' AND fjalekalimi='$converted_pass')";
$r = mysqli_query($con,$q); // Run the query.

// Count the number of returned rows:


$num = mysqli_num_rows($r);
if ($num == 1) { // Match was made.

// Get the user_id:


$row = mysqli_fetch_array($r);

// Make the UPDATE query:


$q = "UPDATE llogaria SET fjalekalimi='$newconverted_pass' WHERE id=$row[0]";
$r = mysqli_query($con,$q);

C2 General
if (mysqli_affected_rows($con) == 1) { // If it ran OK.

// Print a message.
echo '<h1>Urime!</h1>
<p>Fjalekalimi u ndryshua me sukses.</p><p><br /></p>';

} else { // If it did not run OK.

// Public message:
echo '<h1>System Error</h1>
<p class="error">Fjalekalimi nuk mund te ndryshohet per shkak te nje problemi
</p>';
// Debugging message:
echo '<p>' . mysqli_error($con) . '<br /><br />Query: ' . $q . '</p>';
}
mysqli_close($con); // Close the database connection.

// Include the footer and quit the script (to not show the form).
exit();

} else {

// Invalid email address/password combination.


echo '<h1>Error!</h1>
<p class="error">Adresa e email dhe/ose fjalekalimi nuk jane te sakte.</p>';
}
mysqli_close($con);

} else { // Report the errors.


echo '<h1>Error!</h1>
<p class="error">problemet e meposhtme ndodhen:<br />';
foreach ($errors as $msg) { // Print each error.
echo " - $msg<br />\n";
}

} // End of if (empty($errors)) IF.

} // End of the main Submit conditional.


?>
</body>
</html>

C2 General

You might also like