Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> prosze o przeanalizowanie kodu :)
rozny
post
Post #1





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 14.01.2004
Skąd: Zielona Góra

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


Witam wszystkich (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 17)
sticker
post
Post #2





Grupa: Zarejestrowani
Postów: 611
Pomógł: 19
Dołączył: 28.02.2005
Skąd: Wrocław

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


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ść (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif)
Go to the top of the page
+Quote Post
rozny
post
Post #3





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 14.01.2004
Skąd: Zielona Góra

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


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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

prosze o jeszcze jakies sugestie, ew. co moge zrobic, zeby ten kod zamienic w obiektowy (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)


EDIT: zrobilem drugiego admina i jest roznica, jakie haslo sie wpisze, wiec pod tym wzgledem jest ok.

Ten post edytował rozny 11.12.2006, 14:27:35
Go to the top of the page
+Quote Post
Ziels
post
Post #4





Grupa: Zarejestrowani
Postów: 235
Pomógł: 2
Dołączył: 30.06.2006

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


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
Go to the top of the page
+Quote Post
rozny
post
Post #5





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 14.01.2004
Skąd: Zielona Góra

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


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...
Go to the top of the page
+Quote Post
acztery
post
Post #6





Grupa: Zarejestrowani
Postów: 945
Pomógł: 7
Dołączył: 15.03.2005
Skąd: katowice

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


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. ?>


Ten post edytował acztery 11.12.2006, 16:09:51
Go to the top of the page
+Quote Post
skowron-line
post
Post #7





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


po co tobie pole Haslo skoro i tak nie szukasz hasla w bazie?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) powinno byc tak jak ci a4 napisal

sprawdzanie czy jest uzytkownik o takim loginie i takim hasle
Go to the top of the page
+Quote Post
NetJaro
post
Post #8





Grupa: Zarejestrowani
Postów: 475
Pomógł: 0
Dołączył: 1.04.2005
Skąd: Warszawa

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


I poczytaj o tym, jak się teraz powinno używać sesji.. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) $_SESSION a nie żadne session_is_registered (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
acztery
post
Post #9





Grupa: Zarejestrowani
Postów: 945
Pomógł: 7
Dołączył: 15.03.2005
Skąd: katowice

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


netjaro poczytaj .....

http://www.klaban.torun.pl/help/phppl/func...registered.html

http://pl2.php.net/session_is_registered

Ten post edytował acztery 11.12.2006, 22:23:28
Go to the top of the page
+Quote Post
rozny
post
Post #10





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 14.01.2004
Skąd: Zielona Góra

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


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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Dzieki wielkie za opinie (IMG:http://forum.php.pl/style_emoticons/default/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?

Ten post edytował rozny 12.12.2006, 12:09:08
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #11





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




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.
Go to the top of the page
+Quote Post
rozny
post
Post #12





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 14.01.2004
Skąd: Zielona Góra

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


Ok poprawie to, dzieki za wyprowadzenie z bledu (IMG:http://forum.php.pl/style_emoticons/default/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?
Go to the top of the page
+Quote Post
lopik
post
Post #13





Grupa: Zarejestrowani
Postów: 340
Pomógł: 0
Dołączył: 7.07.2006

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


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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Ten post edytował lopik 12.12.2006, 15:42:27
Go to the top of the page
+Quote Post
rozny
post
Post #14





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 14.01.2004
Skąd: Zielona Góra

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


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?
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #15





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




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
Go to the top of the page
+Quote Post
rozny
post
Post #16





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 14.01.2004
Skąd: Zielona Góra

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


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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Dzieki za podpowiedz, odpowiedz...

Ten post edytował rozny 13.12.2006, 12:37:15
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #17





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




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
Go to the top of the page
+Quote Post
rozny
post
Post #18





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 14.01.2004
Skąd: Zielona Góra

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


Spoko Cysiaczek, juz dalem rade (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Pomogl mi dokladnie ten fragment, ktory zacytowales, zeby nie bylo, ze nie czytam tego co mi tu ludzie podsylaja (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Dzieki Wielkie raz jeszcze (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Jak co to bede jeszcze pytal o rozne sprawy w tym topicu (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

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

Pozdrawiam (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

EDIT: dobra nie wazne juz (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Ten post edytował rozny 14.12.2006, 12:39:17
Go to the top of the page
+Quote Post

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: 25.08.2025 - 03:24