Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: prosze o przeanalizowanie kodu :)
Forum PHP.pl > Forum > Przedszkole
rozny
Witam wszystkich smile.gif Bardzo prosze o przeanalizowanie tego kodu pod wzgledem poprawnosci skladni itp.

Kod dziala tak jak to sobie zalozylem wiec bledow zadnych typu parsy, czy inne errory nie ma, jednak zalezy mi na optymalizacji tego kodu, a niestety doswiadczenie mam niewielkie i podejrzewam ze jest to raczej przerosniety smok smile.gif

  1. <?php
  2.  
  3.  
  4. if (!session_is_registered('logged_in')) {
  5. echo '<p class=top>Admin Panel</p><form action=' .$PHP_SELF. ' method=post class=login>
  6. <input type=text name=login> LOGIN<br />
  7. <input type=password name=passwd> HASŁO<br />
  8. <input type=submit value=zaloguj>
  9. </form>';
  10. }
  11.  
  12. if (isset($_POST['login'])&&isset($_POST['passwd'])) {
  13.  
  14. $connect = mysql_connect('localhost', '*', '*')
  15.  
  16. or die('Brak polaczenia z serwerem mySQL.<br />Błąd: '.mysql_error());
  17.  
  18. echo ('Polaczenie z serwerem jest aktywne.<br/>');
  19.  
  20. $db = mysql_select_db('users', $connect)
  21.  
  22. or die('Brak polaczenia z baza danych<br />Blad: '.mysql_error());
  23.  
  24. echo ('Polaczenie z baza danych jest aktywe.<br />');
  25.  
  26.  
  27. $sql = "SELECT * FROM admini WHERE login='".$_POST['login']."' LIMIT 0,30";
  28.  
  29.  
  30. $query=mysql_query($sql) or die ("Bład: ".mysql_error());
  31.  
  32. $fetch = mysql_fetch_array($query);
  33.  
  34. if ($fetch) {
  35. if ($_POST['passwd'] == $fetch['password']) {
  36.  
  37. session_register('logged_in');
  38. header('Location: index.php');
  39.  
  40. }
  41. else {
  42.  
  43. echo 'bledne haslo';
  44.  
  45. }
  46. }
  47.  
  48. else {
  49.  
  50. echo 'bledny login';
  51.  
  52. }
  53.  
  54.  
  55.  
  56. }
  57.  
  58. if (isset($_GET['id'])) {
  59. if ($_GET['id']==logout) {
  60.  
  61. header('Location: index.php');
  62. }
  63. }
  64.  
  65. if (session_is_registered('logged_in')) {
  66. require_once('cfg/menu.cfg');
  67. }
  68. ?>


pozdrawiam smile.gif
sticker
jesli chodzi o
-wydajnosc "5"
-obiektowość "0"
-funkcjonalnosc tabeli admini "0"

Po co masz kilku adminów jak i tak nie ważne w które hasło trafi gość snitch.gif
rozny
to jak to zalatwic? zamiast * w SELECT wrzucic SELECT passwd?

Puki co admina mam tylko jednego, ale wiadomo w przyszlosci sie to zmieni. W takim razie jak to poprawic? Zmienic ta piekielna * w zapytaniu sql o haslo?

A co do projektowania obiektowego, to zdaje sobie sprawe, ze obok zorientowanych obiektowo aplikacji to to nawet nie stalo. Niestety kiedys dawno dawno nauczylem sie troche podstaw php i po dosc niedlugim czasie zarzucilem dalsza nauke, gdyz wciagnelem sie w zgola inny temat, jezeli chodzi o kompy... dzisiaj wracam do programowania w php poniekad z przymusu i zaczynam ze starymi (wiem - niekoniecznie dobrymi) przyzwyczajeniami :/ dlatego ten kod tak nieciekawie raczej wyglada smile.gif

prosze o jeszcze jakies sugestie, ew. co moge zrobic, zeby ten kod zamienic w obiektowy winksmiley.jpg


EDIT: zrobilem drugiego admina i jest roznica, jakie haslo sie wpisze, wiec pod tym wzgledem jest ok.
Ziels
Hasło hasłem, Każdy kolejny admin to większa szansa dla osoby postronnej na odgadnięcie hasła, bo loginu to ja u ciebie nie widziałem
rozny
nie rozumiem... przecie sprawdza w bazie danych czy istnieje podany admin i czy haslo jest takie jakie w bazie danych przypisane dokladnie temu userowi, jak jest zle to nie loguje... moze mam blad w rozumowaniu...
acztery
mi sie nie podoba troszke to pokręcone

np

$sql = "SELECT * FROM admini WHERE login='".$_POST['login']."' LIMIT 0,30";

co to ma byc tzn ze jak bede mial tzn ze moga byc 2 takie same nicki ... bez sens w twoim przypadku bedzie ok 35 i klapa

nie lepiej takk

  1. <?php
  2. $sql = "SELECT * FROM admini WHERE login='".$_POST['login']."' and password='".$_POST['password']."' LIMIT 1 ";
  3. ?>
skowron-line
po co tobie pole Haslo skoro i tak nie szukasz hasla w bazie?questionmark.gif powinno byc tak jak ci a4 napisal

sprawdzanie czy jest uzytkownik o takim loginie i takim hasle
NetJaro
I poczytaj o tym, jak się teraz powinno używać sesji.. winksmiley.jpg $_SESSION a nie żadne session_is_registered tongue.gif
rozny
session_is_registered wzialem bezposrednio z manuala pl.php.net z rozdzialu dot. sesji, wiec tutaj zaufam specjalistom, ktorzy pracuja nad php, co do reszty to podumam i podziubam i poprawiem smile.gif

Dzieki wielkie za opinie smile.gif

  1. <?php
  2. $connect = mysql_connect('localhost', '*', '*')
  3. or die('Brak polaczenia z serwerem mySQL.<br />Błąd: '.mysql_error());
  4.  
  5. $db = mysql_select_db('news', $connect)
  6. or die('Brak polaczenia z baza danych<br />Blad: '.mysql_error());
  7.  
  8. $show = 'SELECT * FROM `news` ORDER BY `' .$_GET['id']. '` LIMIT 1 ';
  9. $wykonaj = mysql_query("$show");
  10.  
  11. $wynik=mysql_fetch_array($wykonaj);
  12.  echo '<h1><a href=index.php?news='.$wynik['id'].'>'.$wynik['tytul'].'</a></h1>';
  13.  echo '<h2>Data: '.$wynik['data'].'</h2><br />';
  14.  echo '<h2> '.$wynik['tresc'].'</h2><br />';
  15.  if (!empty($wynik['obrazek'])) {
  16.  echo '<img src=images/'.$wynik['obrazek'].'.jpg border=1px /><br />';
  17.  }
  18.  else {
  19.  echo '<br />';
  20.  }
  21.  
  22. ?>


Chce wyciagnac z bazy danych newsa o danym ID, przesylanym getem w linku. Wyskakuje mi mysql_fetch_array(): supplied argument is not a valid MySQL resul... Czy mysql_fetch_array dziala tylko w pentli? Chce wyciagnac tego newsa o danym id, ale sypie sie w tym miejscu a zapytanie SELECT * FROM... jest skonstruowane poprawnie.... Jakies sugestie?
Cysiaczek
1.
Dobrze skonstruowane? Śmiem oponować : )
  1. <?php
  2. $show = 'SELECT * FROM `news` ORDER BY `' .$_GET['id']. '` LIMIT 1 ';
  3. ?>


To ma wyciągnąć jeden rekord z bazy?

Może jednak coś takiego?
  1. <?php
  2. $show = "SELECT * FROM news WHERE id='".$_GET['id']."' LIMIT 1";
  3. ?>



2.
Cytat
session_is_registered wzialem bezposrednio z manuala pl.php.net z rozdzialu dot. sesji, wiec tutaj zaufam specjalistom, ktorzy pracuja nad php, co do reszty to podumam i podziubam i poprawiem smilingsmiley.gif


Tak, Faktycznie tak jest tam napisane.
Jest też

Cytat
Notatka: Jeśli użyta została tablica $_SESSION (lub $HTTP_SESSION_VARS dla php 4.0.6 lub starszych), do sprawdzenia czy zmienna została zarejestrowana w sesji należy użyć funkcji isset() na tablicy $_SESSION.

oraz
Cytat
Uwaga!
Przy użyciu $_SESSION (lub $HTTP_SESSION_VARS), nie należy używać session_register(), session_is_registered() i session_unregister().



NIE używaj session_register itp. To przeżytek, który zostanie zlikwidowany.

Pozdrawiam.
rozny
Ok poprawie to, dzieki za wyprowadzenie z bledu smile.gif Jest jeszcze cos, mianowicie jak odwrocic tablice, bo chce zeby nowe wpisy w bazie byly wyzej niz stare... myslalem ze array_reverse();, ale niebardzo mi odwraca? wiecie czym to odwrocic?
lopik
Możesz np: w samym zapytanie dać:
ORDER BY `kolumna` ASC / DESC

I będziesz miał wynika sortowane np: rosnąco / malejąco odpowiednio dla danej kolumny.

Ale może nie o to chodzi, to sorry winksmiley.jpg
rozny
Wywala mi nieprawidlowy argument mysql_fetch_array jak dodam ten ASC / DESC... nie ma funkcji odwracajacej tablice tak jak array_reverse(): w przypadku np bazy na plikach txt?
Cysiaczek
Po co chcesz to odwracać? Padnie wydajność - jak używasz tego ASC/DESC?
Wpisujesz ASC/DESC do zapytania? Razem?

Wystarczy wpisać w google i masz wynik : /

http://webmade.org/kursy/kurs_mysql/cz2.php
rozny
Cytat(lopik @ 12.12.2006, 17:41:14 ) *
Możesz np: w samym zapytanie dać:
ORDER BY `kolumna` ASC / DESC


Dodalem do zapytania SELECT * FROM.... tak jak wywnioskowalem z posta lopik'a. Wywalilo error... A odwrocic to chce, bo nie chce miec starych newsow na samej gorze a nowych na samym koncu wyswietlonej listy... niebardzo wiem jak mam znalezc odpowiedz na to pytanie... na googlach znalazlo mi kilka kursow na ktorych nie znalazlem dobrej odpowiedzi...


EDIT: Juz sobie poradzilem smile.gif Dzieki za podpowiedz, odpowiedz...
Cysiaczek
Przecież dałem Ci link :\
Ale dobra - zacytuje

http://webmade.org/kursy/kurs_mysql/cz2.php :
Cytat
Sortowanie wyników

Gdy wybieramy jakieś dane z tabeli ważna sprawą jest sposób prezentacji danych. Wszystkie wydobyte za pomocą języka zapytań SQL możemy posortować w dowolny sposób. Do sortowanie służy klauzula ORDER BY. Wzór stosowania:

SELECT nazwa_pola FROM nazwa_tabeli ORDER BY nazwa_pola [rodzaj_sortowania]

Rodzaj sortowania nie jest obowiązkowy. Dostępne są dwa rodzaje sortowania:

* ASC - sortowanie rosnąco, domyślny sposób sortowania
* DESC - sortowanie malejąco

Przykład zastosowania:

SELECT `id`, `nazwisko` FROM `nba` ORDER BY `punkty` DESC
rozny
Spoko Cysiaczek, juz dalem rade smile.gif Pomogl mi dokladnie ten fragment, ktory zacytowales, zeby nie bylo, ze nie czytam tego co mi tu ludzie podsylaja winksmiley.jpg Dzieki Wielkie raz jeszcze smile.gif

Jak co to bede jeszcze pytal o rozne sprawy w tym topicu smile.gif


To jeszcze takie pytanie. Czym zainteresowac sie jezeli chce wyswietlic okreslona ilosc znakow w jednej linii. Chodzi mi o to, ze chce wyswietlac w 1 linii np max 60 znakow, reszte przeniesc do 2 i tam tez wyswietlic max 60 itd... nie zalatwie tego tabelka ani divem o okreslonej szerokosci. Czy da sie to jakos zrobic w php, czy raczej musial bym pogrzebac w css? Juz wiem, ze bedzie jeszcze temat wysietlenia tylko czesci newsa, a do calego textu link <wiecej>, ale widzialem gdzies tutka jak to zrobic wiec raczej was tym nie bede meczyl smile.gif

PS. Przegrzebalem forum wszukajac podobnego tematu, ale nie znalazlem nic o wyswietlaniu okreslonej ilosci znakow w 1 linii.

Pozdrawiam smile.gif

EDIT: Poradzilem sobie w CSS,ale nie jest to zbyt eleganckie rozwiazanie (nie ogranicza ilosci znakow), jak ktos ma ochote to moze przedstawic rozwiazanie w php smile.gif

EDIT:

  1. $sql = 'INSERT INTO `news` (`id`, `data`, `tytul`, `tresc`, `autor`, `obrazek`) VALUES ('NULL', '"$data"', '"$tytul"', '"$text"', '"$autor"' , 'NULL');';


Witam to znowu ja smile.gif

Tym razem pytanie co w tym zapytaniu jest niepoprawne... wywala mi:

Parse error: parse error, unexpected T_STRING in D:\Program Files\programy\VertrigoServ\www\serwis\administracja\cfg\add_form.php on line 25

Jak robilem:
  1. $sql = 'INSERT INTO `news` (`id`, `data`, `tytul`, `tresc`, `autor`, `obrazek`) VALUES (NULL,' .$data. ', '.$tytul.', '.$text.', '.$autor.', NULL);';


Wywalalo mi:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ':12:th, cinek, qazokm33, cinek, NULL)' at line 1

No i jak ja mam poprawnie to zapisac? Jak nie zastosuje kropek, wywala parse error, jak stosuje ' ' albo " " albo i ' " " ' to tez wyskakuje parse error ;(

pomozcie prosze smile.gif

EDIT: dobra nie wazne juz winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.