Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> prosze o przeanalizowanie kodu :)
rozny
post 11.12.2006, 11:31:25
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 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
Go to the top of the page
+Quote Post
sticker
post 11.12.2006, 13:12:28
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ść snitch.gif


--------------------
Go to the top of the page
+Quote Post
rozny
post 11.12.2006, 13:22:03
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 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.

Ten post edytował rozny 11.12.2006, 14:27:35
Go to the top of the page
+Quote Post
Ziels
post 11.12.2006, 14:48:38
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 11.12.2006, 14:54:40
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 11.12.2006, 16:09:27
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 11.12.2006, 16:50:30
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?questionmark.gif powinno byc tak jak ci a4 napisal

sprawdzanie czy jest uzytkownik o takim loginie i takim hasle


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
NetJaro
post 11.12.2006, 17:04:16
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.. winksmiley.jpg $_SESSION a nie żadne session_is_registered tongue.gif
Go to the top of the page
+Quote Post
acztery
post 11.12.2006, 22:22:31
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 12.12.2006, 12:08:42
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 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?

Ten post edytował rozny 12.12.2006, 12:09:08
Go to the top of the page
+Quote Post
Cysiaczek
post 12.12.2006, 12:38:26
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.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
rozny
post 12.12.2006, 15:30:05
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 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 12.12.2006, 15:41:14
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 winksmiley.jpg

Ten post edytował lopik 12.12.2006, 15:42:27


--------------------
w3c & c++
Go to the top of the page
+Quote Post
rozny
post 13.12.2006, 12:15:01
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 13.12.2006, 12:20:52
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


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
rozny
post 13.12.2006, 12:32:22
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 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 13.12.2006, 12:35:59
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


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
rozny
post 14.12.2006, 12:27:52
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 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

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
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.07.2025 - 01:06