Witam.
Problem następujący. Próbuję zapisać w bazie danych MySql dane z Dotpay wysyłane metodą POST przez Urlc. Dokładnie email i status płatności. Ściana na którą trafiłem wyglada tak że dane otrzymywane bez problemu zapisują się w zewnętrznym pliku dotpay.txt czyli:
<?php http://www.php.net/ini_set('display_errors', 'On'); http://www.php.net/error_reporting(E_ALL); http://www.php.net/session_start(); $servername = "localhost"; $username = "*******"; $password = "*****"; $dbname = "*******"; $db = new mysqli($servername, $username, $password, $dbname); if ($db->connect_error) { http://www.php.net/echo("Connection failed: " . $db->connect_error); } file_put_contents('dotpay.txt', http://www.php.net/var_export($_POST, true), FILE_APPEND); if(http://www.php.net/isset($_POST['control'])){ $_SESSION['status'] = $_POST['operation_status']; $_SESSION['email'] = $_POST['email']; $sql = "INSERT INTO transkakcje (email, status) VALUES ('{$_SESSION['email']}', '{$_SESSION['status']}')"; try{ $db->query($sql); }catch(Exception $error){ http://www.php.net/echo $error; }; http://www.php.net/echo('OK'); }else{ http://www.php.net/var_dump($_SESSION); http://www.php.net/var_dump($_POST); http://www.php.net/var_dump($_GET); } ?>
A skąd wiesz że nie istnieje? Zaloguj dodatkowo wyjątek z bazy. Raczej tu bym szukał problemu.
Dane z dotpaya się zapisują do pliku czyli to wszystko dociera do skryptu php. Dlaczego w takim razie zmienne
$_SESSION['status'] = $_POST['operation_status'];
$_SESSION['email'] = $_POST['email'];
pozostają jako
$_SESSION['status'] = NULL
$_SESSION['email'] = NULL
i nie przypisują się do nich poprawne wartości?
Przeciez sesje nie sa dzielone miedzy uzytkownikami.... Ty nie masz dostepu do sesji, ktora stworzyl dotpay
Tak tak tylko chodziło o to żeby to się zapisało tylko w mojej sesji.
Zmienne z POST od dotpaya do mojej sesji.
Tu już kombinowałem.
Wcześniej to wyglądało tak że nie było sesji i chciałem przypisać to do zwykłych zmiennych czyli:
$status = $_POST['operation_status'];
$email = $_POST['email'];
i też nie działało.
Toc ci przeciez tlumacze: sesje sie nie dziela. Sesja/request dotpay nie moze pisac do Twojej sesji. Tyle w temacie.
Lepiej napisz co docelowo chcesz osiagnac a nie to co ci sie wydaje droga do tego
Cel jest taki żeby wsadzić do bazy danych email osoby dokonującej transakcji i status transakcji z dotpay'a.
Teraz spróbuje te dane wyciągnąć z pliku w którym udało mi się je złapać i dopiero wtedy zapisać w bazie danych. Innego pomysłu nie mam jak na razie.
Dane masz w tablicy post. Skoro var_export je wypisuje to znaczy że masz inny błąd. Możesz się zastosować do tego co już napisałem wczoraj?
Oczywiście błędy trzeba sobie włączyć. Zobacz pierwszy komentarz https://www.php.net/manual/en/class.mysqli-sql-exception.php
Ok wszystko działa tak jak powinno. Chyba zaczęło działać po modyfikacji części z SQL INSERT INTO ale za dużo zmieniałem i nie pamiętam dokładnie.
Dzięki wielkie za pomoc.
Tutaj działający kod:
<?php http://www.php.net/ini_set('display_errors', 'On'); http://www.php.net/error_reporting(E_ALL); http://www.php.net/session_start(); $servername = "localhost"; $username = "lessus_gjj"; $password = "QuMv0x4Hs"; $dbname = "lessus_gjj"; mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); try { $db= new mysqli($servername,$username,$password,$dbname); } catch (Exception $e) { http://www.php.net/echo $e->getMessage(); } file_put_contents('dotpay.txt', http://www.php.net/var_export($_POST, true), FILE_APPEND); if(http://www.php.net/isset($_POST['email'])){ $status = $_POST['operation_status']; $email = $_POST['email']; try{ $sql = "INSERT INTO transkakcje (email, status) VALUES ('$status', '$email')"; }catch(Exception $e){ http://www.php.net/echo $e; }; try{ $db->query($sql); }catch(Exception $error){ http://www.php.net/echo $error; }; http://www.php.net/echo('OK'); } ?>
Po co ci try/catch na zwykły string? Jeśli chcesz to użyć inaczej niż do zabawy to ja bym ci poradził logować wszystko z POST oraz poprawić echo $e; w catch (oni tam jeszcze FAIL oczekują?).
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)