Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

7 Stron V   1 2 3 > » 

bastard13
Napisane: 22.05.2012, 06:52:17





Grupa: Zarejestrowani
Postów: 664
Dołączył: 8.01.2010
Skąd: Kraków

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

Jeśli chcesz wszystkie to:
  1. UPDATE `config` SET config_value = 'wartosc';

a wybrane:
  1. UPDATE `config` SET config_value = 'wartosc' WHERE config_name IN ('n1', 'n2', 'n3');
  Forum: Przedszkole · Podgląd postu: #964604 · Odpowiedzi: 9 · Wyświetleń: 500

bastard13
Napisane: 2.12.2011, 11:33:03





Grupa: Zarejestrowani
Postów: 664
Dołączył: 8.01.2010
Skąd: Kraków

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

Zgadzam się z LSM, że myślenie 'na przyszłość' jest zgubne, ale pod warunkiem, że rozważasz rozwiązania, które przypuszczasz, że kiedyś, może zostaną zaimplementowane. Wtedy nie implementujesz setek wzorców itp. tylko po to, żeby można było zrobić z tym wszystko, co ci się żywnie podoba, tyle, że w przyszłości, implementując rzeczy, których możesz nigdy nie implementować, ponieważ twoje przewidywania były błędne.
Co do rozwiązania Crozina, to nie jest ono 'nad wyrost', robienie czegoś poprawnie, nie jest wprowadzaniem nadmiernej elastyczności.

Co do klasy Damian, to:
Z wikipedii:
Cytat
W programowaniu obiektowym klasa jest częściową lub całkowitą definicją dla obiektów. Definicja obejmuje dopuszczalny stan obiektów oraz ich zachowania.

i mamy dalej:
Cytat
Klasa nie jest samodzielnym bytem, lecz szablonem do tworzenia nowych obiektów określonego typu i posiadających określone zachowanie.[...]Poszczególne instancje klasy posiadają ten sam zbiór zachowań i atrybutów, lecz różnią się przechowywanymi w nich wartościami.[...]


Czyli klasa definiuje atrybuty i zachowanie obiektów, ale dopiero przy ich tworzeniu określamy ich stan.
Rozumiem, że klasa Damian dziedziczyłaby po klasie Człowiek tyle, że ustawiałaby jakieś domyślne wartości, tak? No to się to trochę kłóci z powyższymi.

Programowanie obiektowe zostało wymyślone w celu jak najdokładniejszego odwzorowania rzeczywistości.
Załóżmy więc, że Damian to model. W takim wypadku, czym są jego instancje? Damian1, Damian2 itp.? Nawet jeżeli każdy Damian jest rudy, sympatyczny i nieprzeciętnie inteligenty, to czy oznacza to, że mamy do czynienia z nowym człowiekiem? Wątpięsmile.gif

Jeżeli już koniecznie chcesz robić coś takiego, to możesz stworzyć jakąś fabrykę, która zwraca ci obiekt klasy Człowiek z odpowiednimi ustawieniami (czyli umiejętnościami, imieniem, IQ i wszystkim innym, co tylko chcesz).
Takie samo rozwiązanie zastosowałbym do przykładu, który przedstawił Orzeszekk (z klasą AvatarUploader). Tutaj też rozwiązaniem byłaby fabryka.
Bo tworzenie dziedziczenia tylko i wyłącznie po to, żeby klasy od razu miały ustawiony szereg odpowiednich wartości jest bez sensu i nie jest poprawne, nie ważne czy uczy tego Duńczyk, Holender, Polak, czy wiesz to z tutoriali. Bo w takim wypadku dojdziesz do skrajności, gdzie dla każdego zestawu danych będziesz miał osobny obiekt?

Dziedziczenie powinno rozszerzać funkcjonalność i wtedy ma ono sens. Jeżeli służy tylko do ustawiania wartości, 'bo taki zestaw danych jest często używany' tzn. że mamy do czynienia z błędnym rozumieniem dziedziczenia.

A co do pytania głównego, to tutaj pisałem trochę na temat tego, kiedy interfejs a kiedy klasa abstrakcyjne. W Twoim wypadku, uwzględniając tylko te informacje, które przekazałeś i nic więcej (bez przypuszczeń), to interfejs jest Ci nie potrzebny, wszystko ląduje w klasie abstrakcyjnej.
  Forum: Object-oriented programming · Podgląd postu: #918996 · Odpowiedzi: 23 · Wyświetleń: 1 742

bastard13
Napisane: 25.09.2011, 00:06:04





Grupa: Zarejestrowani
Postów: 664
Dołączył: 8.01.2010
Skąd: Kraków

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

Powinno zadziałać:
  1. SELECT movie_name, p1.people_fullname AS leadactor, p2.people_fullname AS director
  2. FROM movie
  3. LEFT JOIN people AS p1
  4. ON movie_leadactor = people_id
  5. LEFT JOIN people AS p2
  6. ON movie_director = people_id
  7. ORDER BY movie_name;
  Forum: Przedszkole · Podgląd postu: #901423 · Odpowiedzi: 4 · Wyświetleń: 371

bastard13
Napisane: 22.09.2011, 21:54:02





Grupa: Zarejestrowani
Postów: 664
Dołączył: 8.01.2010
Skąd: Kraków

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

Najpierw explode(), żeby zrobić z tego tablicę (rozbijasz po znaku nowej linii). Następnie sort(), aby posortować alfabetycznie i shuffle(), żeby kolejnością rządził przypadek:)
  Forum: Przedszkole · Podgląd postu: #900977 · Odpowiedzi: 1 · Wyświetleń: 311

bastard13
Napisane: 22.09.2011, 10:30:43





Grupa: Zarejestrowani
Postów: 664
Dołączył: 8.01.2010
Skąd: Kraków

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

Najlepiej to pogrupować te funkcje jakoś logicznie, zrobić z tego klasy, każdą klasę umieścić w osobnym pliku, w odpalanym skrypcie dołączyć klasę/funkcję do autoloadingu zarejestrować ją przy użyciu spl_autoload_register i wtedy to, co będziesz potrzebował będzie wczytywane w locie:)
  Forum: Przedszkole · Podgląd postu: #900747 · Odpowiedzi: 2 · Wyświetleń: 381

bastard13
Napisane: 21.09.2011, 10:08:12





Grupa: Zarejestrowani
Postów: 664
Dołączył: 8.01.2010
Skąd: Kraków

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

Kod klasy jest taki jak powyżej i wywołujesz tylko te dwie metody, nic więcej?
Może chodzi ci o to, że metoda $cache->cacheSaveData(array('d')); zwraca null, co jest prawdą, bo ona nic nie zwraca (brak return w metodzie), a 'object' jest wyświetlany, bo wywołujesz gettype(). Innego pomysłu nie mam.
  Forum: Przedszkole · Podgląd postu: #900425 · Odpowiedzi: 4 · Wyświetleń: 415

bastard13
Napisane: 21.09.2011, 09:32:33





Grupa: Zarejestrowani
Postów: 664
Dołączył: 8.01.2010
Skąd: Kraków

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

Cytat(heniek87 @ 20.09.2011, 14:45:34 ) *
Chcę zrobić kreator misji tzn. piszę opis sytuacji i daje kilka opcji do wyboru. Po wypostowaniu tego musi się to znaleźć w tablicy. Następnie klikam na jedną z opcji którą wcześniej dodałem i znów piszę ospis sytuacji i dodaje kilka opcji itd..

Czyli rozumiem, że robisz coś takiego (muszę sobie to łopatologicznie przedstawić dla lepszego zrozumienia:):
- tworzę misję UratujMisia, dodaję opis: 'Pomóż Ani uratować misia z rąk złej, brzydkiej czarownicy'. I dodaję opcje: SzukajMisiaWZamku, SzukajWLochach, SzukajWPokojuAni
- następnie biorę opcję SzukajMisiaWZamku, dodaję opis: 'Przeszukaj cały zamek, wszystkie komnaty i wypytaj ludzi, czy nie widzieli misia'. Dodaję opcje: SzukajWKomnacieKrólewskiej, SzukajWJadalni etc.
i oczywiście te kroki powtarzamy zagłębiając się jeszcze głębiej.
O to chodzi?
Jak nie, to rzuć przykładem, jeżeli tak, to twoim rozwiązaniem jest:
Composite lub po polsku.
  Forum: PHP · Podgląd postu: #900417 · Odpowiedzi: 16 · Wyświetleń: 1 101

bastard13
Napisane: 18.09.2011, 21:22:10





Grupa: Zarejestrowani
Postów: 664
Dołączył: 8.01.2010
Skąd: Kraków

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

Metoda getRequest() powinna zwracać obiekt klasy Request, która zawiera informacje nt. aktualnego requestu, czyli jej budowa może wyglądać mniej więcej tak:
  1. class Request {
  2. private $_controllerName;
  3. private $_actionName;
  4. private $_params = array(); //dobrze byłoby, gdyby istniał podział na parametry przekazane za pomocą metody GET i POST
  5. public function getControllerName($default = 'index') {} //jeżeli nie został przekazany w url kontroler, to zostaje zwrócony domyślny
  6. public function getActionName($default = 'index') {} //analogicznie j.w.
  7. public function getParams($method = Request::ALL) {} //zwraca wszystkie parametry. Tutaj radziłbym zastosować jakieś consty do określenia czy wszystkie wysłane postem, getem, czy ogólnie wszystkie
  8. public function getParam($name, $default = null) {} //zwraca wartość parametry lub $default, gdy parametr nie został przekazany
  9. }

Oczywiście to tylko sugestia, bo można spokojnie to rozbudować. Dodatkowo pozostaje decyzja, czy parametry są przekazywane, czy sam obiekt dobiera się do nich z tablic globalnych. To samo tyczy się nazw akcji i kontrolera. Czy pobierać je wewnątrz obiektu klasy, czy może przekazywać. Jeżeli chcesz to wszystko ustawiać to raczej proponowałbym takie dane przekazywać w konstruktorze, a nie za pomocą seterów, ponieważ logika podpowiada, że po utworzeniu obiektu klasy request raczej nie powinien się zmienić.
Temat można rozwinąć, jeżeli zakładasz również obsługę kodu z linii poleceń. W takim wypadku doradzałbym wyciągnięcie klasy bazowej (abstrakcyjnej) wyżej i stworzenie Request_HTTP i Request_CLI lub coś w tym stylu.
  Forum: PHP · Podgląd postu: #899853 · Odpowiedzi: 3 · Wyświetleń: 518

bastard13
Napisane: 17.09.2011, 22:54:14





Grupa: Zarejestrowani
Postów: 664
Dołączył: 8.01.2010
Skąd: Kraków

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

Tym, jaka akcja dla danego kontrolera powinna zostać wykonana zajmuje się front controller.
Jeżeli nie ma żądanego kontrolera lub brakuje akcji dla danego kontrolera, to powinien (front controller) w tym miejscu zwrócić wyjątek.
Coś w tym stylu, załóżmy, że metoda uruchamiająca odpowiednią akcję nazywa się run:
  1. public function run()
  2. {
  3. $request = $this->getRequest(); //metoda request powinna zwracać obiekt z danymi dotyczącymi requestu
  4. $controllerName = $request->getControllerName(); //zwraca nazwę kontrolera lub nazwę domyślnie ustawioną, gdy url jest bez parametrów
  5. $actionName = $request->getActionName(); //analogicznie jak wyżej
  6. try {
  7. $controller = new $controllerName; //autoloader powinien wyrzucić wyjątkiem, jeżeli nie znajdzie kontrolera
  8. $controller->setRequest($request); //request powinien zostać przekazany do kontrolera
  9. }
  10. catch(Autoloader_Exception $e)
  11. {
  12. throw new Controller_Exception('Kontroler ' . $controllerName .' nie istnieje.'); //wyrzucone, gdy autoloader nie znajdzie klasy
  13. }
  14.  
  15. if(!method_exists($controller, $actionName))
  16. throw new Controller_Exception('Akcja '.$actionName.' nie istnieje.'); //wyrzucane, gdy brakuje metody
  17.  
  18. $controller->{$actionName}; //wykonanie akcji, możesz zwracać wynik, jeżeli zachodzi taka potrzeba.
  19. }

A kod kontrollera wygląda np. tak:
  1. Controller_A {
  2. public function foo() {}//gdy url: www.site.com/a/foo
  3. public function boo() {}//gdy url: www.site.com/a/boo
  4. }

Radzę zastosować zamiast takich urli: www.site.com/index.php?module=user&action=shownotactive&other=1_2 coś takiego: www.site.com/user/shownotactive?other=1_2 wygląda o wiele ładniej. Wartość parametru other powinna być dostępna z obiektu Request, a nie przekazywana jako parametr metody akcji.
  Forum: PHP · Podgląd postu: #899689 · Odpowiedzi: 3 · Wyświetleń: 518

bastard13
Napisane: 8.09.2011, 22:29:24





Grupa: Zarejestrowani
Postów: 664
Dołączył: 8.01.2010
Skąd: Kraków

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

Tak na pierwszy rzut oka to ok.
Usunąłbym jednak te constant value. Po co ci one? I tak z bazą łączysz się raz. Już prędzej wykorzystałbym to do przechowywania soli.
A następny krok to OOP:)
  Forum: PHP · Podgląd postu: #897511 · Odpowiedzi: 19 · Wyświetleń: 1 010

bastard13
Napisane: 7.09.2011, 19:00:12





Grupa: Zarejestrowani
Postów: 664
Dołączył: 8.01.2010
Skąd: Kraków

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

Sorry, z tą solą to trochę pokręciłem. Tak to jest jak się robi dziesięć rzeczy na raz:P
Sól to jest unikalny string (zazwyczaj). Może on być zahardcodowany w pliku lub zapisany w bazie. Dzięki niej ciężej jest odkryć hasło, które zostało przepuszczone przez funkcję haszującą.
Twoją solą może być np. 'sad8%$9sdk' lub cokolwiek zechcesz. Im bardziej przypadkowy jest to zbiór znaków, tym lepiej.
I tą właśnie sól doklejasz do hasła, które przesłał użytkownik, nie ważne czy to rejestracja, czy logowanie.
http://en.wikipedia.org/wiki/Salt_%28cryptography%29
  Forum: PHP · Podgląd postu: #897190 · Odpowiedzi: 19 · Wyświetleń: 1 010

bastard13
Napisane: 7.09.2011, 17:52:22





Grupa: Zarejestrowani
Postów: 664
Dołączył: 8.01.2010
Skąd: Kraków

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

  1. $pass = md5(htmlspecialchars(stripslashes(strip_tags(trim($_POST['password'])))));

To, co robisz w tym kodzie jest całkowicie zbędne. Wystarczy, że użyjesz funkcji haszującej, jest to wystarczające zabezpieczenie.

  1. $user_password = sha1($pass.$user_login);

A takie zabawy są już ciekawsze:) Tylko zamiast $user_login używa się zazwyczaj soli, czyli jakiegoś indywidualnego ciągu znaków, który również zapisujesz do bazy. Możesz użyć np. funkcji http://pl2.php.net/manual/en/function.microtime.php do jego generowania.

  1. $user_login = htmlspecialchars(stripslashes(strip_tags(trim($_POST['username']))));

Wystarczy, że użyjesz metody:
http://pl2.php.net/manual/en/function.mysq...cape-string.php
Jednak osobiście uważam, że co do loginu, to walidacja powinna wyglądać trochę inaczej. Chodzi o to, że zazwyczaj login ma pewien określony zbiór znaków, z których może się składać np. litery, cyfry, _, -, spacja itp. W każdym razie zbiór dozwolonych znaków jest określony dlatego też lepiej walidować login użytkownika, a nie (tak jak ty) filtrować.
Do walidacji przydaje się funkcja:
http://pl2.php.net/manual/en/function.preg-match.php
  Forum: PHP · Podgląd postu: #897167 · Odpowiedzi: 19 · Wyświetleń: 1 010

bastard13
Napisane: 7.09.2011, 17:09:28





Grupa: Zarejestrowani
Postów: 664
Dołączył: 8.01.2010
Skąd: Kraków

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

Chciałbyś, aby po wciśnięciu buttona wykonała się metoda get()?
Jeżeli tak, to nie ma takiej możliwości. Kod php'a jest po stronie serwera i zostaje zakończony nim jest przekazany do klienta. A to klient wciska button.
Możesz użyć AJAX'a, aby przesłać zapytanie do serwera i odebrać odpowiedź.
  Forum: Przedszkole · Podgląd postu: #897144 · Odpowiedzi: 2 · Wyświetleń: 287

bastard13
Napisane: 7.09.2011, 17:15:44





Grupa: Zarejestrowani
Postów: 664
Dołączył: 8.01.2010
Skąd: Kraków

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

Możesz użyć:
http://dev.mysql.com/doc/refman/5.5/en/str...ction_substring
  Forum: Przedszkole · Podgląd postu: #897146 · Odpowiedzi: 1 · Wyświetleń: 322

bastard13
Napisane: 7.09.2011, 16:58:17





Grupa: Zarejestrowani
Postów: 664
Dołączył: 8.01.2010
Skąd: Kraków

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

Używając strpos() zastąpisz tylko pierwsze wystąpienie danej litery. Możesz ciąg traktować jako tablicę, czyli:
  1. $text = 'some cool text';
  2. $position = strpos($text, 'o');
  3. $text[$position] = 'x';
  4. echo $text;


lub możesz skorzystać z funkcji str_replace(), aby zastąpić wszystkie wystąpienia liter:
  1. <?php
  2. $text = 'some cool text';
  3. echo str_replace('o', 'x', $text);
  Forum: PHP · Podgląd postu: #897133 · Odpowiedzi: 4 · Wyświetleń: 487

bastard13
Napisane: 7.09.2011, 22:18:36





Grupa: Zarejestrowani
Postów: 664
Dołączył: 8.01.2010
Skąd: Kraków

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

Co do kwestii klasy user, to tworzenie jej obiektu powinno wyglądać tak:
  1. $user = new User();

Bez id, ponieważ jeżeli podajesz id w konstruktorze oznacza to, że użytkownik nie jest tworzony tylko pobierany z bazy.

Pobieranie użytkownika z bazy powinno wyglądać tak:
  1. $user = Users::find(3);

I w tym momencie, jeżeli istnieje użytkownik o id 3, to klasa Users go zwraca, a jeżeli nie istenieje, to zwraca false. Dlatego też nie jest ci potrzebna metoda exists()

Coś o TableAbstract:
  1. abstract class TableAbstract
  2. {
  3. public function find($id) {}
  4. public function delete($id) {}
  5. public function update($id, array $data) {}
  6. abstract protected function _getTableName();
  7. }
  8.  
  9. class Users extends TableAbstract
  10. {
  11. protected function _getTableName() {
  12. return 'Users';
  13. }
  14. }
  15.  
  16.  
  17. class Groups extends TableAbstract
  18. {
  19. protected function _getTableName() {
  20. return 'Groups';
  21. }
  22. }


Mniej więcej o to chodzi. Jak dobrze przemyślisz sprawę to metody update, delete i find różnią się tak naprawdę jedynie nazwą tabeli.
  Forum: Object-oriented programming · Podgląd postu: #897236 · Odpowiedzi: 6 · Wyświetleń: 534

bastard13
Napisane: 7.09.2011, 10:56:22





Grupa: Zarejestrowani
Postów: 664
Dołączył: 8.01.2010
Skąd: Kraków

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

1) W klasach User i Group masz settery i gettery do każdej wartości, więc jaki jest ich sens? Przypuszczam, że i tak będziesz wysyłał zawsze pełny zestaw danych więc zastanów się nad zastąpieniem tych metod: setData(array $data).
2) W konstruktorze nie powinno być parametru id, bo skąd wiesz jaki id będzie miał rekord? Przypuszczam, że kolumna jest auto inkrementowana. Id powinien być ustawiany dopiero po zapisie User/Group w bazie.
3) Groups i Users powinny rozszerzać klase abstrakcyjną np. TableAbstract, ponieważ w innym wypadku będziesz miał sporo kodu, który będzie duplikował się.
4) Metody add() i remove() powinny przyjmować jako parametr obiekt klasy User/Group, ponieważ to właśnie je chcesz zapisać/usunąć w/z bazy.
5) Czy rzeczywiście jest ci potrzebna metoda exist() ? Zastąpiłbym ją raczej find(), która zwróci albo obiekt (czyli rekord jest) albo false (brak rekordu).
6) Metody check() i hash() z klasy Users powinny wylecieć. check() jest metodą autoryzacji, więc powinna się znaleźć w tego typu klasie, natomiast hash() przypuszczam, że wykonuje jakieś operacje na stringu, więc na to konto również powinna być odpowiednia klasa.
  Forum: Object-oriented programming · Podgląd postu: #897014 · Odpowiedzi: 6 · Wyświetleń: 534

bastard13
Napisane: 4.09.2011, 21:02:07





Grupa: Zarejestrowani
Postów: 664
Dołączył: 8.01.2010
Skąd: Kraków

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

Cytat
fajne w tym jest to, że jeśli chcę przeładować ajaxem "centrum" aplikacji, to request z marszu zwróci mi tylko środek, a jak wywołam ten sam odnośnik w nowym oknie, to doklei layout i wszystko będzie działało odpowiednio.

Nie wydaje mi się, żeby coś takiego było potrzebnym zabiegiem. W końcu wiesz, które akcje mają być responsem ajaxowym, a które nie, więc po co dodatkowo to sprawdzanie robić po stronie serwera? Jeżeli użytkownik wpisze ajaxowy url z palca to dlaczego otaczać to dodatkowo layoutem? Taka akcja nie jest pożądana, więc dlaczego nie wypluć po prostu czystego responsa?

Cytat
tym sposobem mam wymieszane wszystkie akcje ajaxowe oraz nei ajaxowe w controlerach

Dobrze prawi:) Logika jest ważniejsza niż typ żądania.
  Forum: PHP · Podgląd postu: #896398 · Odpowiedzi: 5 · Wyświetleń: 698

bastard13
Napisane: 18.08.2011, 22:45:51





Grupa: Zarejestrowani
Postów: 664
Dołączył: 8.01.2010
Skąd: Kraków

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

Funkcja podaj_dane() wyciąga dane z pliku, więc powinna je wyciągać z bazy.
Najpierw łączysz się z bazą: http://pl.php.net/manual/en/mysqli.connect.php
Następnie pobierasz dane: http://pl.php.net/manual/en/mysqli.query.php
Przy użyciu selecta wynikiem jest: http://pl.php.net/manual/en/class.mysqli-result.php
Żeby dostać dane w postaci tablicy asocjacyjnej wykonujesz metodę: http://pl.php.net/manual/en/mysqli-result.fetch-assoc.php
I gotowe:)
  Forum: Przedszkole · Podgląd postu: #891426 · Odpowiedzi: 6 · Wyświetleń: 592

bastard13
Napisane: 8.08.2011, 10:56:54





Grupa: Zarejestrowani
Postów: 664
Dołączył: 8.01.2010
Skąd: Kraków

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

http://php.net/manual/en/function.preg-replace.php
Coś w stylu:
  1. $data = preg_replace('/' . $id . ' => "[a-z0-9]+",/','',$data);

Pisane na szybko i pewnie się gdzieś wysypie, ale chodzi mniej więcej o coś takiego.
Mimo wszystko takie kombinacje nie są czymś ładnym i moim zdaniem powinieneś zmienić coś w kodzie, a nie bawić się w takie operacje.
  Forum: PHP · Podgląd postu: #888479 · Odpowiedzi: 6 · Wyświetleń: 466

bastard13
Napisane: 8.08.2011, 09:51:45





Grupa: Zarejestrowani
Postów: 664
Dołączył: 8.01.2010
Skąd: Kraków

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

z php.net:
Cytat
PDO::query() returns a PDOStatement object, or FALSE on failure.

oraz:
http://www.php.net/manual/en/pdostatement.rowcount.php
i z tego masz:
  1. return $result === false ? 0 : ($result->rowCount ? 1 : 0);

pierwsze jest po to, aby sprawdzić, czy nie było żadnego faila.
  Forum: Przedszkole · Podgląd postu: #888458 · Odpowiedzi: 1 · Wyświetleń: 408

bastard13
Napisane: 3.08.2011, 08:30:24





Grupa: Zarejestrowani
Postów: 664
Dołączył: 8.01.2010
Skąd: Kraków

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

A jaki sposób kodowania ustawiasz w nagłówkach maila?
Dodaj do header'a:
'Content-type: text/html; charset=utf-8'
powinno pomóc.
  Forum: Przedszkole · Podgląd postu: #887019 · Odpowiedzi: 2 · Wyświetleń: 352

bastard13
Napisane: 31.07.2011, 22:41:40





Grupa: Zarejestrowani
Postów: 664
Dołączył: 8.01.2010
Skąd: Kraków

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

http://www.php.net/manual/en/function.eval.php
nic dodać, nic ująćsmile.gif
  Forum: Przedszkole · Podgląd postu: #886278 · Odpowiedzi: 3 · Wyświetleń: 249

bastard13
Napisane: 31.07.2011, 22:38:57





Grupa: Zarejestrowani
Postów: 664
Dołączył: 8.01.2010
Skąd: Kraków

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

http://www.php.net/manual/en/function.str-replace.php
lub
http://www.php.net/manual/en/function.preg-replace.php
ale w Twoim przypadku wystarczy pierwsza.
  Forum: Przedszkole · Podgląd postu: #886277 · Odpowiedzi: 4 · Wyświetleń: 416

bastard13
Napisane: 31.07.2011, 17:36:45





Grupa: Zarejestrowani
Postów: 664
Dołączył: 8.01.2010
Skąd: Kraków

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

Tak powinno wyglądać twoje wyrażenie:
  1. array_key_exists('a', $_GET) && ($_GET['a'] === 'pomoc' || $_GET['a'] === 'faq')

A co było źle w Twoim?
  1. $_GET['a'] == 'pomoc' && 'faq'

Po pierwsze, tak jak napisał sadistic_son, to: && -> and, || -> or. Możesz też używać słów or i and. Interpreter da radęsmile.gif
Po drugie and lub or są łącznikami wyrażeń logicznych więc to co ty zrobiłeś to:
$_GET['a'] == 'pomoc' i 'faq', gdzie:
1) $_GET['a'] == 'pomoc' - równa się true, gdy wchodzisz na 'pomoc', a false, gdy na 'faq'
2) 'faq' - zawsze równe true
  Forum: Przedszkole · Podgląd postu: #886182 · Odpowiedzi: 8 · Wyświetleń: 401

7 Stron V   1 2 3 > » 

New Posts  Nowe odpowiedzi
No New Posts  Brak nowych odpowiedzi
Hot topic  Popularny temat (Nowe)
No new  Popularny temat (Brak nowych)
Poll  Sonda (Nowe)
No new votes  Sonda (Brak nowych)
Closed  Zamknięty temat
Moved  Przeniesiony temat
 

RSS Wersja Lo-Fi Aktualny czas: 27.04.2024 - 08:46