Jump to content
php.lv forumi

A Kur Koda Gabali?


K|NG

Recommended Posts

Vienkāršs autorizācijas kodagabals :)

<code><font color="#000000">

<font color="#0000CC"><?php
</font><font color="#006600">if ( ( !isset( </font><font color="#0000CC">$PHP_AUTH_USER </font><font color="#006600">)) || (!isset(</font><font color="#0000CC">$PHP_AUTH_PW</font><font color="#006600">))
 || ( </font><font color="#0000CC">$PHP_AUTH_USER </font><font color="#006600">!= </font><font color="#CC0000">'juzers' </font><font color="#006600">) || ( </font><font color="#0000CC">$PHP_AUTH_PW </font><font color="#006600">!= </font><font color="#CC0000">'parole' </font><font color="#006600">) ) {

</font><font color="#0000CC">[url=http://lv.php.net/header]header[/url]</font><font color="#006600">( </font><font color="#CC0000">'WWW-Authenticate: Basic realm="Ieeja un izeja tikai man"' </font><font color="#006600">);
</font><font color="#0000CC">[url=http://lv.php.net/header]header[/url]</font><font color="#006600">( </font><font color="#CC0000">'HTTP/1.0 401 Unauthorized' </font><font color="#006600">);
echo </font><font color="#CC0000">'<script>alert("Skaitam Tavas dienas!!! pēc 10 sekundēm sāksies he he");</script>'</font><font color="#006600">;
exit;

} else {
echo </font><font color="#CC0000">"echo vai print vai figvinjzinkas"</font><font color="#006600">;
echo </font><font color="#CC0000">"kaukaads include"</font><font color="#006600">; }
</font><font color="#0000CC">?>
</font>
</font>
</code>

:ph34r:

Link to comment
Share on other sites

labaak lietot ko citu, jo vakar nobesiijos ar shito auterizaaciju, protams beigaas izdomaaju, ka man nemaxaa tik daudz lai es tur pistos ar vinju un atstaaju, kaada bija :P

Bet vispaar iesaku labaak mazinju forminju un sesijas...

 

Nu kautkaa taa :ph34r:

Link to comment
Share on other sites

  • 1 year later...
Man ar šo loginu ir maza problēma. Itkā viss strādā, bet kad es rakstu pareizu username un password, tad nekas nenotiek, varbut vaina kādos konfig failos? :unsure: :huh:

Paarbaudi kodu. Iespeejams tev vienkaarsi aiz autorizaacijas skripta, nav else noslegts!

 

Jaabuut taa:

<?php

 

//te iet autorizaacijas kods (parole utt.)

 

} else{

 

//šeit drukājas pārējā lapa (ja autorizācija ir pareiza)

 

} // un shim jaabuut nosleegtam (nosleedz else)

 

} // atkarīgs protams no autorzācijas koda īpatnībām, taču iespējams, ka tev pietrūkst vēl šo pēdējo figūriekavu (man tā gadījās un es arī nevarēju saprast kāpēc lapa neparādās. Paexperimentē ar figūriekavām koda beigās!

Link to comment
Share on other sites

Nu, ja jau mētāties, tad mētāties.

 

fails auth.php

<?php
session_start();
if(!(isset($_SESSION['uid']))){
header('Location: login.php');//ja sesijā nav piereģistrēts - tātad neautorizēts
exit;
}
?>

fails login.php

<?php
session_start();
$salt = ' jasdjjdajhdjhdu'; //teksta rinda, kuru izmanto paroļu ģenerēšanā.
$kluuda = '';
if(isset($_SESSION['uid'])){
header('Location: index.php');//Lapa uz kuru aiziet, ja ir autorizējies
}
else{
if(isset($_POST['uname'])){
 require('functions.php');//fails, kurā notiek datubāzes konekcijas izveide un tamlīdzīgas lietas
 $uname = $_POST['uname'];
 $pass = '';
 if(isset($_POST['pass'])){
	 $pass = $_POST['pass'];
 }
 $pass = md5($uname . $salt . $pass);
 $vaicajums = "SELECT * FROM lietotaji WHERE login = '$uname' AND password = '$pass' LIMIT 0, 1";
 //echo $vaicajums;
 $rezultats = mysql_query($vaicajums, $conn); 
 if(mysql_num_rows($rezultats)==1){
	 $_SESSION = array();//tiek aizvērta vecā sesija
	 session_destroy();//lai izvairītos no session-fixation
 session_start();//http://www.acros.si/papers/session_fixation.pdf
	 $rinda = mysql_fetch_assoc($rezultats);
	 $_SESSION['uid'] = $rinda['uid'];
	 $_SESSION['gid'] = $rinda['gid'];//neobligāta
	 $_SESSION['login'] = $rinda['login'];//neobligāta
	 $_SESSION['vards'] = $rinda['vards'];//neobligāta
	 $_SESSION['uzvards']= $rinda['uzvards'];//neobligāta
	 mysql_free_result($rezultats);
	 mysql_close($conn);
	 header('Location: index.php');//Lapa, uz kuru aiziet, ja ir autorizēts.
 }
 else {
	 $kluuda = 'Nepareiza parole vai lietotāja vārds';
 }
}
echo $kluuda;
?>
<form method='POST'>
<label for="uname">Lietotāja vārds: </label>
<input name="uname" type="text" size="17"><br>
<label for="pass">Parole: </label>
<input name="pass" type="password" size="17"><br>
<input type="submit" value="Pieslēgties">
<input type="reset" value="Nodzēst"></form>

fails logoff.php

<?php
require('auth.php');
$_SESSION=array();
session_destroy();
header('Location: login.php');//aizmest uz to lapu, uz kuru vajag.
?>

fails chpass.php

<?php
require('auth.php');
$salt = ' jasdjjdajhdjhdu';
if(strlen($_POST['oldpass'])&&strlen($_POST['newpass1'])&&strlen($_POST['newpass2'])){
if($_POST['newpass1'] == $_POST['newpass2']){
 $vaicajums = "UPDATE lietotaji SET password = '" . md5($_SESSION['login'] . ':' . $_POST['newpass1']) . "' WHERE uid = " . $_SESSION['uid'] . " AND password = '" . md5($_SESSION['login'] . $salt . $_POST['oldpass']) . "'";
 $rezultats = mysql_query($vaicajums, $conn);
 if(mysql_affected_rows($conn) == 1){
	 ?>
Parole nomainīta veiksmīgi
	 <?php
 }
 else {
	 ?>
Parole nav nomainīta, vai arī jaunā parole sakrīt ar veco paroli!
	 <?php
 }
}
else {
 ?>
Parole nav nomainīta. Jaunā parole nesakrīt ar jaunās paroles apstiprinājumu!
 <?php
}
}
else{
?>
<form method="POST">
<label for="oldpass">Vecā parole:</label>
<input name="oldpass" size="12" type="password">
<label for="newpass1">Jaunā parole:</label>
<input name="newpass1" size="12" type="password">
<label for="newpass2">Jaunās paroles apstiprinājums:</label>
<input name="newpass2" size="12" type="password">
<input type="submit" value="Saglabāt">
</form>
<?php
}
?>

 

Tātad visās lapās, kurām jāpiemēro autorizācija, kā pirmā rindiņa jāliek require_once(' auth.php');

 

Par paroļu glabāšanu datubāzē:

Datubāzē glabājas paroļu MD5 attēli (MD5 varat aizvietot ar savu iecienītāko hash funkciju).

paroles attēls tiek veidots šādi MD5 ( lietotājvārds + sāls + parole).

lietotājvārda piesaiste parolei, dod to, ka ja vairāki lietotāji izvēlas vienādas paroles - ir ļoti niecīga iespēja, ka to šādā veidā veidotie attēli sakritīs.

sāls (vienkārši kaut kāda labi gara teksta rindiņa, kas ir unikāla katram projektam, kur izmantots šis autentifikācijas mehānisma) izmantošana dod to, ka jūsu izmantotās mīļakās paroles attēls nebūs izmantojams citā vietā. (tas tā - paranojiķiem).

Patiesībā galvenais, ko panāk, piesaistot šīs divas vērības, ir tas, ka nevar izmantot publiski pieejamās vārdnīcas, kurās jau iepriekš noģenerēti hash attēli izplatītākajām parolēm.

 

P.S. atvainojos, ka neieliku to visu iekš paste.lv ;)

Edited by Aleksejs
Link to comment
Share on other sites

Vai tad shis tev nebuus par sarezhgitu? Nu iet jau tev tas ietu, bet man shkjiet ka labaak panjem vienkaarshaaku un tad pats pieliek klaat ko vajag. Bet tas pirmais variants galigi neder!

 

Shitas peedeejais ir baigi shiks! :P

Link to comment
Share on other sites

kur tikai var izveidot datu bāzi mysql. Piemēram cik man zinām bezmaksas mysql piedāvā tikai no.lv. Varbūt kāds zin kaut ko labāku un varētu padalīties :)

Link to comment
Share on other sites

×
×
  • Create New...