Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[TuT] Sitehell - kontroler php


Rekomendowane odpowiedzi

Opublikowano

Sitehell

Czym jest sitehell?
Sitehell jest kontrolerem php który odpowiada za przyspieszenie pracy Web Developerom.
Wystarczy wgrać pobrać pliki następnie wgrać je na stronę a naszym oczom ukaże się struktura strony napisanej w html5.
Ale to nie wszystko, sitehell posiada autorskie skrypty przeznaczone do łączenia się z każdą bazą danych (PDO).

 

Program w aktualnym stanie (0.2) potrafi
-Wyświetlać różne dokumenty które posiadają taki sam header oraz footer, więcej wytłumaczę za chwile.

-Auto dodawanie JQuery, bootstrapa (można wyłączyć w config.php)

-Łączenie się z bazą danych każdego rodzaju (MySQL,PostgreSQL itp) (Insert,Select zostanie jutro dodany).

 

Korzystasz z statycznego html, i musisz do każdej strony dodawać osobno <html> etc?
Pisząc ten kontroler przyświecało mi aby tego właśnie unikać.

 

Jeśli jednak jesteś osobą która bardzo dobrze zna się na PHP to skorzystanie z sitehella oszczędzi twój czas na pisanie własnego kontrolera.

 

Instrukcja obsługi

Statycznie zostaje wczytywany index.php z katalogu view/layout
aby wczytać inną treść strony a nie musieć dodawać góry i dołu strony wystarczy utworzyć nowy plik w tej lokalizacji (view/layout)

następnie dodać nazwę tego pliku do switch'a który to znajduje sie w pliku index.php a ten to znowu znajduje się w głównym katalogu.

switch($view) {
	case 'index' :

	break;

	case 'library' :

	break;
}

Aby wczytać stronę należy wpisać adres serwera dodając ?view=NazwaPliku
Do plików dodałem przykładowy plik library.
?view=library

 

W razie pytań odpowiem najszybciej jak to możliwe.

Lepszych Back-Endowców zapraszam do zajrzenia w kody znajdujące się w lokalizacji view/oop i wytkniecie błędów dzięki którym dowiem się znacznie więcej.

 

Pełna konfiguracja w pliku config.php

https://github.com/roshed/Sitehell - Pobierz

Jeśli pomogłem to zamiast gdzie kol wiek klikać najlepiej wejdź na stronę http://www.pajacyk.pl i kliknij.
W ten sposób pomogłeś. Czy to takie trudne aby wykonywać tą czynność codziennie?

Opublikowano

Kontrolerem bym tego nie nazwał, prędzej zmiennymi przechowującymi dane części strony.

A i jak już tak robisz to może lepiej zrobić to w array?

 
$string = array(
      'first' => 'index',
      'last' => 'footer',
);

Potem wywołujesz to tak: $string['first']
 

itp..

 

Może komuś się przyda.

Opublikowano

I powiedz mi jak w ten sposób chciał byś wyciągnąć z bazy danych przykładową rubrykę? I odpowiedz sobie sam co jest łatwiejsze w użyciu.

Jeśli pomogłem to zamiast gdzie kol wiek klikać najlepiej wejdź na stronę http://www.pajacyk.pl i kliknij.
W ten sposób pomogłeś. Czy to takie trudne aby wykonywać tą czynność codziennie?

Opublikowano

Tak samo jak używasz zmiennych ?? dla przykładu

 

mysql_query('SELECT * FROM '.$tablice['element'].' LIMIT 2')

Masz nazwe tabeli z tablicy

hcq0.png


Opublikowano

Ahhh powaliły mi się już zmienne... zapomniałem że to właśnie jest ta zmienna a nie zmienna do której jest przypisywane mysql_fetch_array()...

W tym wypadku to ma to jak największy sens :)

Jeśli pomogłem to zamiast gdzie kol wiek klikać najlepiej wejdź na stronę http://www.pajacyk.pl i kliknij.
W ten sposób pomogłeś. Czy to takie trudne aby wykonywać tą czynność codziennie?

  • 8 miesięcy temu...
Opublikowano

@Refresh.

Sitehell zaktualizowany do wersji 0.2, czekam na opinie.

Jeśli pomogłem to zamiast gdzie kol wiek klikać najlepiej wejdź na stronę http://www.pajacyk.pl i kliknij.
W ten sposób pomogłeś. Czy to takie trudne aby wykonywać tą czynność codziennie?

Opublikowano

W jaki sposób ma mi to przyspieszyć pracę?

Za każdym razem mam sobie dodawać case'a jak stworzę nową podstronę?

 

Trochę to mało funkcjonalne.

 

A jako "lepszy back-endowiec" stwierdzam, że kod jest mało przemyślany. Może później się wypowiem na temat kodu trochę więcej.

 

Na twoim miejscu starałbym się zrobić z tego mały, ale za to bardziej funkcjonalny framework. To co jest obecnie nie posłuży nikomu na dłuższą mete.

gamedevmania.com

Opublikowano

Case to tylko zabezpieczenie, wystarczyło by stworzyć jedynie plik, dodając swich'a get jest dodatkowo filtrowany aby ktoś nie wczytywał sobie np config.php za pomocą include...
A z reszty opcjonalności nie trzeba korzystać, chociaż większość z nich napisałem aby sprawdzić swoje umiejętności OOP.

Jeśli pomogłem to zamiast gdzie kol wiek klikać najlepiej wejdź na stronę http://www.pajacyk.pl i kliknij.
W ten sposób pomogłeś. Czy to takie trudne aby wykonywać tą czynność codziennie?

Opublikowano

Dobra wcześniej źle na to spojrzałem. Według mnie ten switch jest w ogóle nie potrzebny. Wystarczy lekko zmienić strukturę folderów. Powinieneś sobie zrobić folder inc obok view i te wszystkie configi trzymać w tym inc.

Powinieneś jeszcze sprawdzać czy plik istnieje. Co gdy plik ze zmiennej $view nie będzie istniał?

 

Nie widzę sensu tworzenia klasy Database. W końcu PDO to też jest klasa. Więc po co ci klasa tworząca obiekt innej klasy?

I w jaki sposób mam się dostać do zmiennej $pdo skoro nie jest ta zmienna nigdzie zwracana?

gamedevmania.com

Opublikowano

Nie, chowanie pliku w folderach to jeden wielki błąd, zabezpieczenie równe 0.

Co do dostania się do PDO napisałem funkcje która wczytuje ta class'e. Kod podałem wyżej. Dodanie tego kodu gdzie kolwiek spowoduje wczytanie funkcji oraz połączenie z baza. Opinia nic nie wnosi

ponieważ po raz drugi nie ma uzasadnienia po przez nie przeanalizowanie kodu.

 

A sprawdzenie pliku również zostało zaskryptowane, jeśli plik nie istnieje wczytuje index.php

Równiez nie przeanalizowany kod.

 

Post pisany z telefonu.

Jeśli pomogłem to zamiast gdzie kol wiek klikać najlepiej wejdź na stronę http://www.pajacyk.pl i kliknij.
W ten sposób pomogłeś. Czy to takie trudne aby wykonywać tą czynność codziennie?

Opublikowano

W takim razie nie masz pojęcia o projektowaniu takich aplikacji. Raczej nie widziałeś w jaki sposób są napisane podobne (lecz bardziej funkcjonalne) skrypty. Struktura katalogów jest u ciebie, że tak powiem, popieprzona.

 

Wiesz jaka funkcja służy do sprawdzania czy dany plik istnieje na serwerze. Takiej funkcji nie zastosowałeś w swoim kodzie. Nie widzę odpowiedniego warunku poza sprawdzaniem czy tablica get nie jest pusta.

 

I to:

<?php	
//Project by https://github.com/roshed
include('config.php');
class Database{
	//Connect to the database
	public function Connect($dbip, $dbselect, $dbuser, $dbpass){
		try{
			$pdo = new PDO('mysql:host='.$dbip.';dbname='.$dbselect.'', $dbuser, $dbpass);
		}//end try
		catch (PDOException $e) {
			print "Not configured database in config.php "."<br/>";
	    	print "Error!: " . $e->getMessage() . "<br/>";
	    die();
		}//end catch
	}//end function Connect
}
?>

Powyższy kod jest śmieszny. Widząc to ma wrażenie, że jest to twoja pierwsza przygoda z OOP.

Powiedzmy mamy taki przykład:

$db = new Database;
$db->Connect($dbip, $dbselect, $dbuser, $dbpass);

W jaki sposób mam się tu dostać do obiektu klasy PDO, aby wykonać jakąkolwiek operację w bazie danych? Funkcja Connect nie zwraca NIC. Więc co dalej twoim zdaniem mam zrobić? Bo ja myślę, że do wykonania operacji w bazie potrzebny byłby mi obiekt przechowywany w zmiennej $pdo, no ale skoro nie jest nigdzie zwracany to nic nie zrobię.

 

Jako osoba z wieloletnim doświadczeniem mówię ci: Jesteś totalnym amatorem. 

Ja na twoim miejscu bym się wstydził pokazywać taki kod publicznie.

 

A i tak, przeanalizowałem twój kod linia po linii. Jest tam jeszcze kilka takich kwiatków jak te powyżej.

gamedevmania.com

Opublikowano

Ponieważ ten kod nie ma robić nic więcej poza leczeniem sie z baza co wynika z funkcji Pdo która napisałem. To tylko connect co wynika również z nazwy zmiennej jak i samej funkcji, opis zawiera nawet wzmiankę ze to tylko połączenie. Insert, select dodam dzisiaj gdy kod zostanie dokaczony.

Funkcja load znajdująca się w load.php wczytuje dany plik tylko jeśli funkcja zostanie wywołana. Tak samo jak include w c++, co do przygody z OOP masz rację dopiero zaczynam dlatego prosiłem o przeanalizowanie kodów.

 

Również mogę mówić o Panu jako amatorze jeśli nie zabezpieczyl by Pan include.

Prosty typ ataku.

Adres.pl/?view=http://www.example.pl/plik.php

 

Pisane z tel.

Jeśli pomogłem to zamiast gdzie kol wiek klikać najlepiej wejdź na stronę http://www.pajacyk.pl i kliknij.
W ten sposób pomogłeś. Czy to takie trudne aby wykonywać tą czynność codziennie?

Opublikowano

Ale nie wiesz o tym, że nie da się includować pliku z innej domeny?

 

Klasa Database jest nie potrzebna. Wszystkie potrzebne funkcje zawiera już klasa PDO. Chociaz mozesz sobie zrobic tą klase z jakimis funkcjami pomocniczymi, to i tak powinienes zrobic ze zmienej $pdo zmienną publiczną. Aby mozna miec do niej dostęp przez $db->pdo.

 

Powinienes sprawdzac czy plik istnieje na serwerze funkcją file_exists().

Bo co bedziesz jak wpiszę ?view=byleco ?

gamedevmania.com

Opublikowano

Jeśli wpiszesz =byłe co to wczyta index dzięki case default

A pomijając pliki tylko całościowe programowanie OOP, czego powinienem się nauczyć?

Jeśli pomogłem to zamiast gdzie kol wiek klikać najlepiej wejdź na stronę http://www.pajacyk.pl i kliknij.
W ten sposób pomogłeś. Czy to takie trudne aby wykonywać tą czynność codziennie?

Opublikowano

No na początek. Kontruktory, destruktory, gettery, settery, dziedziczenie, interfejsy.

 

Ciekawie jest to opisane na wikibooks.

gamedevmania.com

Opublikowano

Ok dzięki za lekturę na dzisiaj.

A co do sitehella to przywróce go do wersji z samym kontrolerem kiedy to był łatwy i szybki w użyciu.

A rozwinę go o rozszerzenia które będzie się dogrywac w jakiś ciekawy sposób.

Jeśli pomogłem to zamiast gdzie kol wiek klikać najlepiej wejdź na stronę http://www.pajacyk.pl i kliknij.
W ten sposób pomogłeś. Czy to takie trudne aby wykonywać tą czynność codziennie?

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...