wdrożenia PrestaShop

INSERT do bazy z pliku php

  • 15 Odpowiedzi
  • 5511 Wyświetleń

0 użytkowników i 1 Gość przegląda ten wątek.

*

Offline lustfingers

  • Stały użytkownik
  • ***
  • 92
  • 0
  • PrestaShop: PS
  • Status: forum
INSERT do bazy z pliku php
« dnia: Marzec 25, 2015, 05:50:52 pm »
Witam, otóż szukam możliwości dodania klienta z pliku php. Miało by to działać na takiej zasadzie że ładuję plik na serwer i jak go odpalę z adresu przeglądarki to dodaje mi klienta w bazie danych według wcześniej zdefiniowanych w pliku wartości. Czy ktoś mógłby podpowiedzieć tylko sam wzór jak powinien taki plik wyglądać samo zapytanie do bazy postaram się sam ogarnąć.

P.S west tutaj chyba coś o tobie piszą https://www.prestashop.com/forums/topic/433260-integracja-presta-15-z-kurierem-si%C3%B3demka-modu%C5%82/

*

Offline design4VIP

  • user
  • Mieszkaniec
  • *****
  • 3,866
  • 131
    • design4VIP z innej strony...
  • PrestaShop: PS
  • Status: Programista
Odp: INSERT do bazy z pliku php
« Odpowiedź #1 dnia: Marzec 25, 2015, 06:36:00 pm »
no jak powinien wygladac... no jezeli juz z zapytaniem sobie poradzisz to masz calosc. jedno co, zeby nie grzebac sie z logowaniami i dostepem do bazy mozesz skorzystac z dobrodziejstwa presta i uzyc:

include_once(dirname(__FILE__).'/../../config/config.inc.php');


i class odczytu/zapisu do bazy:

$db = Db::getInstance();

$query = 'INSERT INTO ....... ';


jednak pamietajac, ze przez taki pliczek zostawiasz klucze wlamywaczowi (hakerowi) do swoich drzwi (bazy danych)
design4VIP z innej strony...

*

Offline lustfingers

  • Stały użytkownik
  • ***
  • 92
  • 0
  • PrestaShop: PS
  • Status: forum
Odp: INSERT do bazy z pliku php
« Odpowiedź #2 dnia: Marzec 25, 2015, 06:53:04 pm »
Dzięki, tzn. jak dostęp do bazy? Czym się to różni od wpisów w plikach modułów i jak się przed tym zabezpieczyć?

*

Podemski

  • Gość
Odp: INSERT do bazy z pliku php
« Odpowiedź #3 dnia: Marzec 25, 2015, 07:01:30 pm »
Nie musisz używać INSERT INTO, PrestaShop działa na obiektach, klient = obiekt, możesz zrobić plik na serwerze, wczytać tak jak napisał design4VIP plik config.inc.php, dalej daj jakiś warunek w stylu:


$hash = 'superhash';


if($check_hash = Tools::getValue('hash', 0) && $check_hash = $hash)
// tu kontynuujemy


Czyli plik będzie się uruchamiał tylko wtedy gdy wczytasz cos.php?hash=superhash w innym przypadku nic się nie stanie.


A jak dodać nowego klienta? To proste.


$customer = new Customer();
$customer->firstname = 'Imie';
$customer->lastname =' Nazwisko';
$customer->email = 'moj@email.pl';
$customer->passwd = 'haslo'; // zostanie automatycznie zmienione na hash pozniej
$customer->add();


i tyle.

*

Offline lustfingers

  • Stały użytkownik
  • ***
  • 92
  • 0
  • PrestaShop: PS
  • Status: forum
Odp: INSERT do bazy z pliku php
« Odpowiedź #4 dnia: Marzec 25, 2015, 09:26:21 pm »
Walczę...

ponieważ już miałem gotowe zapytanie dla employee to próbuje dodać employee (z customer powinno byc tak samo?) ale chyba musze od razu spróbowacna customer bo chyba coś robię źle, tzn. nie mam żadnych błędów ale nic nie zapisuje sie w bazie. Próbowałem obie metody i klapa.

Plik wygląda aktualnie tak:
<?php
include_once(dirname(__FILE__).'/config/config.inc.php');
$db = Db::getInstance();
$query = ('INSERT INTO ' . _DB_PREFIX_ . 'ps_employee ( `id_employee` ,
 `id_profile` ,
 `id_lang` ,
 `lastname` ,
 `firstname` ,
 `email` ,
 `passwd` ,
 `last_passwd_gen` ,
 `stats_date_from` ,
 `stats_date_to` ,
 `stats_compare_from` ,
 `stats_compare_to` ,
 `stats_compare_option` ,
 `preselect_date_range` ,
 `bo_color` ,
 `bo_theme` ,
 `bo_css` ,
 `default_tab` ,
 `bo_width` ,
 `bo_menu` ,
 `active` ,
 `optin` ,
 `id_last_order` ,
 `id_last_customer_message` ,
 `id_last_customer` ,
 `last_connection_date`
 )
VALUES (NULL,
 `15`,
 `1`,
 `nazwisko`,
 `imie`,
 `email@email.pl`,
 `haslohaslo`,
 `2014-12-27 14:15:27`,
 `2014-11-27`,
 `2014-12-27`,
 `0000-00-00`,
 `0000-00-00`,
 `1`,
 NULL ,
 NULL ,
 `default`,
 `admin-theme.css`,
 `1`,
 `0`,
 `1`,
 `1`,
 `0`,
 `0`,
 `0`,
 `0`,
 `2015-03-25` );'); ?>

A co do hasha dostaje Fatal error Class 'Tools' not found in scieżka do pliku linia 6 czyli if($check_hash = Tools::getValue('hash', 0) && $check_hash = $hash)

*

Podemski

  • Gość
Odp: INSERT do bazy z pliku php
« Odpowiedź #5 dnia: Marzec 25, 2015, 09:29:31 pm »
Rozumiem, że plik jest w katalogu głównym sklepu?


Nie powinieneś dodawać pracowników czy klientów bezpośrednio do bazy zapytaniem, część z tych segmentów w PrestaShop ma przypisane różne rzeczy, które dzieją się przy dodawaniu, usuwaniu czy edycji danego obiektu.


Na chwile obecną to wygląda jakbyś nie miał pliku w katalogu głównym, config.inc.php się nie wczytywał i nie masz dostępu do klas PrestaShop.

*

Offline west

  • Administrator
  • Mieszkaniec
  • *****
  • 5,292
  • 106
  • Płeć: Mężczyzna
  • Europasaz.pl
    • PrestaShop, Wordpress, SMF, Woocomerce
  • PrestaShop: 8.0
  • Status: Programista
Odp: INSERT do bazy z pliku php
« Odpowiedź #6 dnia: Marzec 26, 2015, 06:12:55 am »

P.S west tutaj chyba coś o tobie piszą https://www.prestashop.com/forums/topic/433260-integracja-presta-15-z-kurierem-si%C3%B3demka-modu%C5%82/


To może ja zostawie bez komentarza :) a zacytuje kogoś innego z tego wątku:
Cytuj
PS. Panie Podemski, nie jest to czyste zagranie wzgledem konkurencji....


Zaś w kwestii problemu moim zdaniem nie dodajemy za pomocą sql - ja tak nigdy nie robie zaś za pomocą klas ponieważ:
Cytuj
Nie powinieneś dodawać pracowników czy klientów bezpośrednio do bazy zapytaniem, część z tych segmentów w PrestaShop ma przypisane różne rzeczy, które dzieją się przy dodawaniu, usuwaniu czy edycji danego obiektu.

MODUŁY | https://europasaz.pl |  SKLEPY INTERNETOWE | WSPARCIE TECHNICZNE | HOSTING | https://europasaz.pl 

*

Offline lustfingers

  • Stały użytkownik
  • ***
  • 92
  • 0
  • PrestaShop: PS
  • Status: forum
Odp: INSERT do bazy z pliku php
« Odpowiedź #7 dnia: Marzec 26, 2015, 07:19:38 pm »
Generalnie nie chcę w ten sposób dodawać pracownika działam na tym przykładzie ponieważ miałem pod nie gotowe zapytanie (chociaż w przyszłości nie wykluczam że mogę chcieć w ten sposób zmienić np. masowo dane dla pracowników, np raz w tygodniu wgrywać taki plik z wcześniej przygotowanymi hasłami dla pracowników odpalać skrypt i usuwać plik, docelowo ma być 20 pracowników i ciężko na nich wymóc aby regularnie zmianiali hasła).
Pomimo wielu prób i kombinacji wciąż nic się nie zapisuje w bazie danych, plik jest w głównym katalogu sklepu i próbowałem zmieniać ścieżkę do pliku config i wpisywałem już różne podane przez was propozycje.

Czy ktoś testował podane przykłady?

west czy mógłbyś rozwinąć myśl na temat klas?


*

Podemski

  • Gość
Odp: INSERT do bazy z pliku php
« Odpowiedź #8 dnia: Marzec 26, 2015, 08:04:34 pm »
A masz włączone raportowanie o błędach? Może jest jakiś błąd.


Co do klas - to ja Ci napisałem o co chodzi, każda klasa np. Customer rozszerza klasę główną ObjectModel, czasem do metod np. add() czy delete() jest dodawany kod dynamicznie z innych części systemu, np. automatyczne hashowanie hasła, walidacja etc.

*

Offline lustfingers

  • Stały użytkownik
  • ***
  • 92
  • 0
  • PrestaShop: PS
  • Status: forum
Odp: INSERT do bazy z pliku php
« Odpowiedź #9 dnia: Marzec 26, 2015, 08:31:45 pm »
Z połączeniem do bazy już sobie poradziłem jest prosty błąd
_DB_PREFIX_ . 'ps_employee czyli daje to ps_ps_employee

Teraz jest taki błąd
Fatal error: Uncaught Unknown column '15' in 'field list'
więc w VALUE zamieniłem 15 na NULL to dostaje taki sam komunikat z wartością column '1'


*

Podemski

  • Gość
Odp: INSERT do bazy z pliku php
« Odpowiedź #10 dnia: Marzec 26, 2015, 08:34:07 pm »
Ah Ty nadal działasz na bezpośrednim zapytaniu SQL?


No to powodzenia.

*

Offline lustfingers

  • Stały użytkownik
  • ***
  • 92
  • 0
  • PrestaShop: PS
  • Status: forum
Odp: INSERT do bazy z pliku php
« Odpowiedź #11 dnia: Marzec 26, 2015, 08:37:14 pm »
Działam tak ponieważ w innym nie widziałem żadnych efektów, ale za chwile spróbuje i dam znać.

*

Offline lustfingers

  • Stały użytkownik
  • ***
  • 92
  • 0
  • PrestaShop: PS
  • Status: forum
Odp: INSERT do bazy z pliku php
« Odpowiedź #12 dnia: Marzec 26, 2015, 08:44:24 pm »
Dzieki Krystian teraz widzę jakie to było proste, na początku nie bardzo rozumiałem o co chodzi, teraz wszystko śmiga :)

Dzieki za pomoc deejay3 (wcześniejszy twój nick jakoś mi bardziej pasował, ale biznes się sam nie wypromuje).

*

Offline lustfingers

  • Stały użytkownik
  • ***
  • 92
  • 0
  • PrestaShop: PS
  • Status: forum
Odp: INSERT do bazy z pliku php
« Odpowiedź #13 dnia: Marzec 26, 2015, 08:58:55 pm »
Jeszcze tak z ciekowości spróbowałem się zalogowac tym hasłem i nie mogę więc jak dodam klienta to pewnie też się nie zaloguje, próbowałem równiez innej metody opisanej tutaj na forum przez west-a czyli cookie_key+haslo dostaję wtedy błąd że hasło jest zadługie i musi sie znajdowac w przedziale do 32 znaków a sam cookiekey ma na oko ponad 50 znaków. Być może działało to w innych wersjach a w 1.6.0.14 nie działa?

Ewentualnie może znacie jakiś generator który mi wygeneruje hasła na podstawie cookiekey?

*

Podemski

  • Gość
Odp: INSERT do bazy z pliku php
« Odpowiedź #14 dnia: Marzec 26, 2015, 09:01:01 pm »
Hasło musisz hashować,


Tools::encrypt('haslo');


chociaż to powinno dziać się automatycznie jeśli działasz na obiektach i w danym obiekcie pole jest typu passwd