Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [inny] YII - logowanie
skorpionek93
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 11.04.2014

Ostrzeżenie: (0%)
-----


Witam.
Jestem nowy w temacie frameworków, YII jest pierwszym, którego się uczę więc jestem jeszcze lekko zagubiony. Przestudiowałem książke Helionu o YII (nie zachwyciła mnie szczerze mówiąc) ale nadala wielu rzeczy nie rozumiem. Moje pytanie dotyczy bezpieczeństwa takiego skryptu logowania:

Model:

  1. <?php
  2.  
  3. class Uzytkownicy extends CActiveRecord
  4. {
  5.  
  6. public function tableName()
  7. {
  8. return 'spr_uzytkownicy';
  9. }
  10.  
  11.  
  12. public function rules()
  13. {
  14.  
  15. return array(
  16. array('uzytkownik_login, uzytkownik_haslo', 'required'),
  17. array('uzytkownik_login, uzytkownik_haslo', 'length', 'max'=>50),
  18. );
  19. }
  20.  
  21.  
  22. public function relations()
  23. {
  24.  
  25. return array(
  26. );
  27. }
  28.  
  29. public function attributeLabels()
  30. {
  31. return array(
  32. 'uzytkownik_id' => 'ID',
  33. 'uzytkownik_login' => 'Login',
  34. 'uzytkownik_haslo' => 'Hasło',
  35. );
  36. }
  37.  
  38. public static function model($className=__CLASS__)
  39. {
  40. return parent::model($className);
  41. }
  42. }
  43. ?>


Widok

  1. <h1>Zaloguj się</h1>
  2. <div class="form">
  3.  
  4. <?php
  5.  
  6. $form=$this->beginWidget('CActiveForm', array(
  7.  
  8. 'id' => 'uzytkownicy-zaloguj-form',
  9. 'enableAjaxValidation' => FALSE
  10.  
  11. ));
  12.  
  13. ?>
  14.  
  15. <p>Pola oznaczone * są wymagane</p>
  16.  
  17.  
  18. <?php echo $form->errorSummary($Model); ?>
  19.  
  20. <div class="row">
  21. <?php echo $form->labelEx($Model, 'uzytkownik_login'); ?>
  22. <?php echo $form->textField($Model, 'uzytkownik_login'); ?>
  23. <?php echo $form->error($Model, 'uzytkownik_login'); ?>
  24. </div>
  25.  
  26. <div class="row">
  27. <?php echo $form->labelEx($Model, 'uzytkownik_haslo'); ?>
  28. <?php echo $form->passwordField($Model, 'uzytkownik_haslo'); ?>
  29. <?php echo $form->error($Model, 'uzytkownik_haslo'); ?>
  30. </div>
  31.  
  32. <div class="row buttons">
  33. <?php echo CHtml::submitButton('Zaloguj'); ?>
  34. </div>
  35.  
  36. <?php $this->endWidget(); ?>
  37.  
  38. </div>


Kontroler:

  1. <?php
  2.  
  3. class TestController extends Controller
  4. {
  5.  
  6. public function actionIndex()
  7. {
  8.  
  9. $this->pageTitle = 'Zaloguj';
  10.  
  11. $Model = new Uzytkownicy;
  12.  
  13.  
  14. if(isset($_POST['Uzytkownicy']))
  15. {
  16.  
  17. $Model->attributes = $_POST['Uzytkownicy'];
  18.  
  19. if($Model->validate())
  20. {
  21.  
  22. $Ile = $Model->count(
  23.  
  24. 'uzytkownik_login = :UzytkownikLogin AND uzytkownik_haslo = :UzytkownikHaslo',
  25.  
  26. ':UzytkownikLogin' => $Model->attributes['uzytkownik_login'],
  27. ':UzytkownikHaslo' => $Model->attributes['uzytkownik_haslo']
  28.  
  29. ));
  30.  
  31. if($Ile == 1)
  32. {
  33.  
  34. Yii::app()->session['zalogowany'] = 'tak';
  35.  
  36. $Rezultat = $Model->findAll(
  37.  
  38. 'uzytkownik_login = :UzytkownikLogin AND uzytkownik_haslo = :UzytkownikHaslo',
  39.  
  40. ':UzytkownikLogin' => $Model->attributes['uzytkownik_login'],
  41. ':UzytkownikHaslo' => $Model->attributes['uzytkownik_haslo']
  42.  
  43. )
  44.  
  45. );
  46.  
  47. foreach ($Rezultat as $RezultatWiersz)
  48. {
  49.  
  50. Yii::app()->session['root'] = $RezultatWiersz->uzytkownik_id;
  51.  
  52. }
  53. }
  54.  
  55.  
  56. }
  57.  
  58. }
  59.  
  60. $this->render('index', array(
  61.  
  62. 'Model' => $Model,
  63.  
  64. ));
  65.  
  66.  
  67. }
  68.  
  69. public function actionWyloguj()
  70. {
  71.  
  72. Yii::app()->session['zalogowany'] = '';
  73.  
  74. Yii::app()->session['root'] = '';
  75.  
  76. $this->redirect(array('test/'));
  77. }
  78.  
  79. }
  80. ?>


Ten skrypt jest napisany na podstawie tej właśnie książki (a raczej w większości z niej przepisany z moimi lekkimi zmianami).
Chciałbym się dowiedzieć czy tak przygotowany skrypt logowania jest bezpieczny i może być bez obaw zastosowany na stronach opublikowanych online?
Bo powiem szczerze, że mam lekkie obawy gdyż wiem ile trzeba sobie zadać trudu pisząc coś takiego w czystym PHP (głównie chodzi o walidację).
Przepraszam za tak laickie pytanie ale jestem mocno początkujący a do dyspozycji mam tylko tą książkę i dokumentację, która jest napisana dosyć ciężkim wg mnie językiem. Praktycznie nie ma innych źródeł w języku polskim.
Pozdrawiam i z góry dziękuję za odpowiedzi.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.12.2025 - 00:24