Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

121 Stron V   1 2 3 > » 

CuteOne
Napisane: 29.05.2016, 22:18:37





Grupa: Zarejestrowani
Postów: 2 958
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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

Witam,

mam dość zdaje się proste pytanie, na które nie znalazłem odpowiedzi. Otóż przy każdym żądaniu, skrypt odpytuje bazę (dokładnie 4 zapytania), o dane zalogowanego użytkownika, którymi wypełnia /model/User zamiast pobrać je z sesji :| Czy istnieje możliwość obejścia tych zbędnych zapytań (wiem, że podczas logowania mogę zapisać całe identity do sesji, i później pobrać je w findIdentity(), ale czy istniej do tego jakiś automat)?

Tak wyglądają pliki

config/web.php
  1. 'user' => [
  2. 'identityClass' => 'app\models\User',
  3. 'enableAutoLogin' => false,
  4. 'loginUrl' => ['authentication/login'],
  5. ],


models/User.php
  1. class User extends ActiveRecord implements IdentityInterface
  2. {
  3.  
  4. //....
  5.  
  6. /**
  7.   * @inheritdoc
  8.   */
  9. public static function findIdentity($id)
  10. {
  11. return static::findOne($id);
  12. }


controllers/ExampleController.php
  1. return [
  2. 'access' => [
  3. 'class' => AccessControl::className(),
  4. 'only' => ['index', 'view'],
  5. 'rules' => [
  6. [
  7. 'allow' => true,
  8. 'actions' => ['index'],
  9. 'roles' => ['?'], // sprawdza Identity, odpalając metodę User::findIdentity(), a ta odpytuje bazę danych
  10. ],
  11. [
  12. 'allow' => true,
  13. 'actions' => ['view'],
  14. 'roles' => ['@'], // sprawdza Identity, odpalając metodę User::findIdentity(), a ta odpytuje bazę danych
  15. ],
  16. ],
  17. ],
  18. ];

  Forum: Frameworki · Podgląd postu: #1192993 · Odpowiedzi: 0 · Wyświetleń: 405

CuteOne
Napisane: 29.05.2016, 15:56:29





Grupa: Zarejestrowani
Postów: 2 958
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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

@edit
- cofnij zmiany, o które prosiłem
- porównaj nazwy pól formularza, a tym co sprawdzasz w skrypcie (np. isset($_POST['name'])).
- popraw je i daj znać czy zadziałało
  Forum: PHP · Podgląd postu: #1192972 · Odpowiedzi: 8 · Wyświetleń: 563

CuteOne
Napisane: 29.05.2016, 13:40:41





Grupa: Zarejestrowani
Postów: 2 958
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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

Po dodaniu mojego kodu, i wysłaniu formularza, na ekranie pokazuje się "A"?
  Forum: PHP · Podgląd postu: #1192968 · Odpowiedzi: 8 · Wyświetleń: 563

CuteOne
Napisane: 29.05.2016, 12:54:17





Grupa: Zarejestrowani
Postów: 2 958
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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

Jeżeli wrzuciłeś nam cały formularz, to brakuje w nim pól, które sprawdzasz w skrypcie PHP. Zobacz czy w ogóle przejdziesz walidację
  1. if ( isset($_POST['email']) && isset($_POST['name']) && isset($_POST['subject']) && isset($_POST['message']) && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) ) {
  2. die('a');
  3. }
  Forum: PHP · Podgląd postu: #1192964 · Odpowiedzi: 8 · Wyświetleń: 563

CuteOne
Napisane: 26.05.2016, 08:33:12





Grupa: Zarejestrowani
Postów: 2 958
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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

[JAVASCRIPT] pobierz, plaintext
  1. $(function () {
  2. $('#textarea').on('change', function () {
  3. val = $(this).val();
  4. alert(val.match('/value="(.*)"/'));
  5. });
  6. }
[JAVASCRIPT] pobierz, plaintext

tu masz tester regexpa https://regex101.com/, mój przykład jest dość... uproszczony, i potrzebujesz lepszego (sprawdzenie czy to input, jaki type itp.)
  Forum: Przedszkole · Podgląd postu: #1192790 · Odpowiedzi: 2 · Wyświetleń: 247

CuteOne
Napisane: 29.05.2016, 12:46:47





Grupa: Zarejestrowani
Postów: 2 958
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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

Cytat(Szymciosek @ 29.05.2016, 02:08:30 ) *
albo skorzystanie z htmlspecialchars i wrzucenie do niego JSONa i sądzę że bardziej czytelne niż klejenie stringa. Do tego dodając jakiś "znak specjalny" do tekstu uniemożliwiamy sobie użycie takiego znaku w wartościach w bazie

  1. $arr = [
  2. 'test' => 12,
  3. 'plant' => 'some plant'
  4. ];
  5.  
  6. $json = htmlspecialchars(json_encode($arr));
  7.  
  8. echo "<option value='" . $json . "'>test</option>";


No raczej nie smile.gif
  1. $arr = [
  2. 'test' => 12,
  3. 'plant' => 'some plant'
  4. ];
  5.  
  6. $json = htmlspecialchars(json_encode($arr));
  7. var_dump(json_decode($json)); //NULL


ps. napisałem, że bardziej odpowiednim sposobem powinno być przekazanie unikalnego id z bazy. Jeżeli martwi cię zablokowanie możliwości użycia znaku w bazie, to zawsze można użyć _#@_ zamiast _ aarambo.gif
  Forum: PHP · Podgląd postu: #1192963 · Odpowiedzi: 13 · Wyświetleń: 627

CuteOne
Napisane: 26.05.2016, 08:59:23





Grupa: Zarejestrowani
Postów: 2 958
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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

json_encode(['id'=>10]); zwróci {"id"=>"10"}, innymi słowy option będzie wyglądał tak <option value="{"id":"10"}">, i dlatego nie zadziała.

Najprostszym rozwiązaniem jest dodanie _ (lub innego znaku) do stringa np
  1. echo '<option value="'. $opcje['data'] . '_' . $opcje['numer_pola'] . '_' . $opcje['roslina'] . '_' . $opcje['nazwa_handlowa']'">'; //....
  2.  
  3. // a w pliku, w którym odbierasz rządanie
  4. $value = explode('_', $_POST['usun']);
  5. var_dump($value);


lub bardziej poprawnie, użycie unikalnego identyfikatora z bazy danych smile.gif
  Forum: PHP · Podgląd postu: #1192791 · Odpowiedzi: 13 · Wyświetleń: 627

CuteOne
Napisane: 26.05.2016, 09:04:56





Grupa: Zarejestrowani
Postów: 2 958
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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

http://forum.php.pl/index.php?showtopic=144188
  Forum: PHP · Podgląd postu: #1192793 · Odpowiedzi: 12 · Wyświetleń: 708

CuteOne
Napisane: 24.05.2016, 08:10:03





Grupa: Zarejestrowani
Postów: 2 958
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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

Luknij http://forum.php.pl/index.php?showtopic=149215
  Forum: PHP · Podgląd postu: #1192596 · Odpowiedzi: 12 · Wyświetleń: 708

CuteOne
Napisane: 19.05.2016, 21:14:37





Grupa: Zarejestrowani
Postów: 2 958
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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

http://www.w3schools.com/sql/sql_datatypes_general.asp
http://www.w3schools.com/sql/sql_datatypes.asp
  Forum: Przedszkole · Podgląd postu: #1192293 · Odpowiedzi: 4 · Wyświetleń: 502

CuteOne
Napisane: 16.05.2016, 14:11:47





Grupa: Zarejestrowani
Postów: 2 958
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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

Już dawno nie widziałem tak beznadziejnie napisanego kodu, ta jedna strona jest podatna na chyba wszystkie możliwe ataki. No ale do rzeczy... masz tu link, który pokazuje jak odbierać i zapisywać pliki na serwerze http://stackoverflow.com/questions/2704314...e-upload-in-php jak będziesz miał z czymś problem to pisz

edit: zamiast multiple="multiple" wystarczy np. name="pliki[]" w każdym inputcie
  Forum: Przedszkole · Podgląd postu: #1192043 · Odpowiedzi: 2 · Wyświetleń: 322

CuteOne
Napisane: 16.05.2016, 18:25:16





Grupa: Zarejestrowani
Postów: 2 958
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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

Jeszcze kilka uwag wink.gif
1. Staraj się unikać takiego kodu mysql_fetch_array(mysql_query()), bo jeżeli mysql_query() nic nie zwróci (zwróci FALSE), php rzuci błędem
2. mysql_* jest już przestarzałe pomyśl nad przejściem na mysqli_* lub PDO
3. Każdą zmienną pochodzącą od użytkownika escape'uj np. za pomocą mysql_real_escape_string()

  1. <?php
  2. $query = mysql_query("SELECT * FROM offer o LEFT JOIN offer_foto of ON (of.oferta = o.id) WHERE o.id = $id");
  3.  
  4. $tmp = [];
  5. while($row = mysql_fetch_assoc($query)) {
  6. if (!array_key_exists($row['ID'], $tmp)) {
  7. $tmp[$row['ID']] = [
  8. 'TITLE' => $row['TITLE'],
  9. 'TEXT' => $row['TEXT'],
  10. 'START3' => $row['START3'],
  11. 'IMAGES' => []
  12. ];
  13. }
  14.  
  15. $tmp[$row['ID']]['IMAGES'][] = [
  16. 'ID' => $row['ID'],
  17. 'SRC' => $row['SRC']
  18. ];
  19. }
  20.  
  21. ?>
  22. ///....
  23.  
  24. <?php foreach ($tmp as $id => $data) : ?>
  25. <?php if ($data['START3'] != 1) : ?>
  26. <p><?= $data['TEXT'];?><br/><br></p></div>
  27. <?php endif; ?>
  28.  
  29. <?php foreach ($data['IMAGES'] as $image) : ?>
  30. <a href="<?= $image['SRC']; ?>"></a>
  31. <?php endforeach; ?>
  32. <?php endforeach; ?>


W zapytaniu podmień * na nazwy kolumn , ponieważ kolumnę ID masz w dwóch tabelach, i mogą pojawić się problemy - sprawdź na googlu jak tworzyć aliasy nazw kolumn smile.gif
  Forum: Przedszkole · Podgląd postu: #1192062 · Odpowiedzi: 4 · Wyświetleń: 250

CuteOne
Napisane: 16.05.2016, 14:24:05





Grupa: Zarejestrowani
Postów: 2 958
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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

Źle do tego podchodzisz smile.gif
1. Robisz zapytania w pętli
2. Zawsze o ile to możliwe przeszukuj bazę po ID nie żadnym SLUGu
3. Staraj się wrzucać sformatowany kod, bo ten słabo się czyta

Pokaż struktury tabel, które wykorzystujesz na tej stronie, to ogarniemy to jednym zapytaniem smile.gif
  Forum: Przedszkole · Podgląd postu: #1192046 · Odpowiedzi: 4 · Wyświetleń: 250

CuteOne
Napisane: 16.05.2016, 14:38:16





Grupa: Zarejestrowani
Postów: 2 958
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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

google:
mysql insert
mysql update
  Forum: Przedszkole · Podgląd postu: #1192051 · Odpowiedzi: 6 · Wyświetleń: 360

CuteOne
Napisane: 8.05.2016, 13:35:04





Grupa: Zarejestrowani
Postów: 2 958
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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

Dać się da smile.gif ale wymaga, to zmiany struktury bazy danych na:

tabela sprzet
id | nazwa
1 Dysk SSD
2 Kabel SATA
3 Karta graficzna

tabela sprzet_zestawy
id | node | sprzet_id | parent_id | depth
1 1 1 NULL 1
2 1 2 1 2
3 1 3 2 3

  1. SELECT * FROM sprzet_zestawy sp JOIN sprzet s ON (s.sprzet_id = sp.id) WHERE node = 1
  Forum: Przedszkole · Podgląd postu: #1191351 · Odpowiedzi: 8 · Wyświetleń: 334

CuteOne
Napisane: 7.05.2016, 19:07:08





Grupa: Zarejestrowani
Postów: 2 958
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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

Ściągnij .zip najnowszej wersji z githuba https://github.com/symfony/symfony , chociaż osobiście nie widziałbym sensu w dodawaniu symfony do netbeansa w ten sposób. Lepiej stworzyć nowy projekt za pomocą composera, a następnie dodać go do netbeansa "PHP Application with Existing Sources"
  Forum: PHP · Podgląd postu: #1191316 · Odpowiedzi: 4 · Wyświetleń: 623

CuteOne
Napisane: 8.05.2016, 14:57:57





Grupa: Zarejestrowani
Postów: 2 958
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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

  1. class A {
  2. public function make($dane) {
  3. echo 'a' . $dane;
  4. }
  5. }


  1. include 'A.php';
  2.  
  3. $dane = 'b';
  4. $a = new A();
  5. $a->make($dane);

  Forum: Przedszkole · Podgląd postu: #1191363 · Odpowiedzi: 9 · Wyświetleń: 428

CuteOne
Napisane: 7.05.2016, 21:44:56





Grupa: Zarejestrowani
Postów: 2 958
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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

Hmm, a nie lepiej rzucać json'a jako odpowiedź serwera? np
  1. class MySpecialException extends Exception {}
  2.  
  3. ///...
  4.  
  5. try {
  6. if(empty($value_login)){
  7. throw new \MySpecialException('Nie wpisano loginu.');
  8. }
  9.  
  10. echo json_encode([
  11. 'status' => 1,
  12. 'content' => 'bla bla bla'
  13. ]);
  14. } catch (\MySpecialException $e) {
  15. $this->logger->add($e); //logowanie błedów
  16. echo json_encode([
  17. 'status' => 0,
  18. 'error' => $e->getMessage()
  19. ]);
  20. } catch (\Exception $e) {
  21. $this->logger->add($e); //logowanie błedów
  22. echo json_encode([
  23. 'status' => 0,
  24. 'error' => 'Nie udało się wykonać'
  25. ]);
  26. }
  Forum: Przedszkole · Podgląd postu: #1191321 · Odpowiedzi: 9 · Wyświetleń: 428

CuteOne
Napisane: 7.05.2016, 14:34:30





Grupa: Zarejestrowani
Postów: 2 958
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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

Tak, ale potrzebujesz do tego trochę wiedzy na temat PHP, poczytaj o:
- sesjach
- przesyłaniu i przechwytywaniu danych z formularza
- includowaniu plików

Jak ogarniesz temat, to wróć z gotowym kodem smile.gif

ps. korzystanie z wszelkiej maści WYSIWYG'ów, to zło wcielone (mimo pozornej szybkości projektowania)
  Forum: PHP · Podgląd postu: #1191300 · Odpowiedzi: 1 · Wyświetleń: 343

CuteOne
Napisane: 7.05.2016, 14:28:50





Grupa: Zarejestrowani
Postów: 2 958
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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

Ehh,
- włącz chorma,
- kliknij na dowolny element strony i z menu wybierz Zbadaj element
- w oknie który przedstawi strukturę HTML, kliknij na element, którego szukasz i wybierz Copy->Copy as XPATH
- wklej ze schowka skopiowanego XPATH'a (powinien wyglądać mniej więcej tak //*[@id="post-main-1191286"])
  Forum: PHP · Podgląd postu: #1191298 · Odpowiedzi: 10 · Wyświetleń: 720

CuteOne
Napisane: 6.05.2016, 11:55:34





Grupa: Zarejestrowani
Postów: 2 958
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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

Tak jak napisał kolega wyżej, najlepszym rozwiązaniem było by wysłanie danych formularza ajaxem, i po pozytywnym ich odebraniu redirect na adres z linka. Na wstępie polecam zaciągnąć sobie bibliotekę jQuery (znacząco ułatwi tego typu operacje). Następnie zacznij lekturę od:
http://api.jquery.com/jquery.ajax/
http://stackoverflow.com/questions/5508021...ref-with-jquery
przyda się również znajomość metody event.preventDefault(), aby kliknięcie w link nie przenosiło nas od razu na inną stronę
  Forum: Przedszkole · Podgląd postu: #1191221 · Odpowiedzi: 4 · Wyświetleń: 404

CuteOne
Napisane: 30.04.2016, 11:34:11





Grupa: Zarejestrowani
Postów: 2 958
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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

  1. protected function getDOMDocument() {
  2. libxml_use_internal_errors(true);
  3. $dom = new DOMDocument;
  4. $dom->loadHTML($this->getHTML());
  5.  
  6. return $dom;
  7. }
  8.  
  9. protected function getDomXPath(\DOMDocument $dom) {
  10. return new DomXPath($dom);
  11. }
  12.  
  13. public function count($string) {
  14. $dom = $this->getDOMDocument();
  15.  
  16. return $dom->getElementsByTagName('option')->length;
  17. }


Tylko, że to całkowicie bezsensu wink.gif za każdym razem gdy będziesz chciał coś zrobić stworzysz nową instancję DOMDocument. Przemyśl to jeszcze smile.gif
  Forum: Przedszkole · Podgląd postu: #1190857 · Odpowiedzi: 8 · Wyświetleń: 998

CuteOne
Napisane: 29.04.2016, 19:48:33





Grupa: Zarejestrowani
Postów: 2 958
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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

  1. libxml_use_internal_errors(true);
  2. $dom = new DOMDocument;
  3. $dom->loadHTML($html);
  4. $xpath = new DomXpath($dom);
  5.  
  6. foreach($xpath->query("//td[contains(concat(' ', normalize-space(@class), ' '), ' td1 ')]") as $td1) {
  7. foreach ($td1->getElementsByTagName('a') as $a) {
  8. echo $a->textContent . "<br />";
  9. }
  10. }
  Forum: Przedszkole · Podgląd postu: #1190837 · Odpowiedzi: 4 · Wyświetleń: 624

CuteOne
Napisane: 29.04.2016, 19:13:07





Grupa: Zarejestrowani
Postów: 2 958
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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

Od tego są pętle wink.gif
  1. foreach ($dom->getElementsByTagName('a') as $node) {
  2. echo $node->textContent;
  3. }


edit: i po co 2x tworzysz $dom = new DOMDocument;?

edit2:
  1. <?php
  2.  
  3. libxml_use_internal_errors(true);
  4. $dom = new DOMDocument;
  5. $dom->loadHTML('<tr><td><a href="A">asd</a></td><td><a href="b">asd2</a><a href="c">asd3</a></td>');
  6.  
  7. foreach ($dom->getElementsByTagName('td') as $node) {
  8. foreach ($node->getElementsByTagName('a') as $a) {
  9. echo $a->getAttribute('href');
  10. }
  11. }
  Forum: Przedszkole · Podgląd postu: #1190835 · Odpowiedzi: 4 · Wyświetleń: 624

CuteOne
Napisane: 29.04.2016, 19:08:01





Grupa: Zarejestrowani
Postów: 2 958
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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

Poczytaj o JIT, HHVM, HipHop i Phalcon for PHP
  Forum: Przedszkole · Podgląd postu: #1190833 · Odpowiedzi: 1 · Wyświetleń: 357

121 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: 26.04.2024 - 10:50