Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Alternatywa dla $_POST
Forum PHP.pl > Forum > PHP
tomczyk20151
Witam, mam pewien problem jak wiadomo w PHP 5.4 zrezygnowano ze zmiennych globalnych. Więc przez to mi nie działa formularz logowania/rejestracji itp.
W sieci znalazłem coś jakby "symulator" owych zmiennych
  1. function register_globals($order = 'egpcs')
  2. {
  3. // define a subroutine
  4. if(!function_exists('register_global_array'))
  5. {
  6. function register_global_array(array $superglobal)
  7. {
  8. foreach($superglobal as $varname => $value)
  9. {
  10. global $$varname;
  11. $$varname = $value;
  12. }
  13. }
  14. }
  15.  
  16. $order = explode("\r\n", trim(chunk_split($order, 1)));
  17. foreach($order as $k)
  18. {
  19. switch(strtolower($k))
  20. {
  21. case 'e': register_global_array($_ENV); break;
  22. case 'g': register_global_array($_GET); break;
  23. case 'p': register_global_array($_POST); break;
  24. case 'c': register_global_array($_COOKIE); break;
  25. case 's': register_global_array($_SERVER); break;
  26. }
  27. }
  28. }

Czy to wystarczy?
Dodam, że po prawidłowym wypełnieniu formularza np z logowaniem pokazuje mi się błąd 404, oczywiście plik istnieje na serwerze.
Co mogę zrobić? Nie mam już siły sad.gif
nospor
Cytat
jak wiadomo w PHP 5.4 zrezygnowano ze zmiennych globalnych.
O, a to ciekawe. Mozesz rozwinac swoja mysl bo uzywalem zarowno 5.4, 5.6 teraz jade na php7 i ciagle jakos zmienne globalne dzialaja... wink.gif
tomczyk20151
Cytat(nospor @ 29.09.2016, 11:27:24 ) *
O, a to ciekawe. Mozesz rozwinac swoja mysl bo uzywalem zarowno 5.4, 5.6 teraz jade na php7 i ciagle jakos zmienne globalne dzialaja... wink.gif

http://www.php.net/manual/en/security.globals.php
nospor
edit: ach, te 'globals'.
No to zamiast bez sensu probowac do nich wrocic, wypadaloby zaczac uzywac w koncu $_POST, $_GET itd. to sie nazywa postep wink.gif
tomczyk20151
Cytat(nospor @ 29.09.2016, 11:29:29 ) *
edit: ach, te 'globals'.
No to zamiast bez sensu probowac do nich wrocic, wypadaloby zaczac uzywac w koncu $_POST, $_GET itd. to sie nazywa postep wink.gif

Używam zarówno $_POST jak i $_GET
nospor
No ale ta dyrektywa w zaden sposob nie wylacza ani POST ani GET. Chyba cos zle zrozumiales... Moze pokaz kod i napisz dokladnie z czym problem
tomczyk20151
Cytat(nospor @ 29.09.2016, 11:33:07 ) *
No ale ta dyrektywa w zaden sposob nie wylacza ani POST ani GET. Chyba cos zle zrozumiales... Moze pokaz kod i napisz dokladnie z czym problem


Nawet i tu wyrzuca 404 po naciśnięciu przycisku

  1. <?php
  2. include ('inc/gora.php');
  3. ?>
  4.  
  5.  
  6. <h2>Reklama - link w stopce</h2>
  7. <p><br>
  8. <b>Dokonane zakupy są realizowane automatycznie.</b></p>
  9.  
  10.  
  11. <?php
  12.  
  13.  
  14.  
  15. ini_set('error_reporting', E_ALL);
  16. ini_set("display_errors", 1);
  17.  
  18. $settings = array(
  19. /*
  20. @nazwa: userid
  21. @opis: numer identyfikacyjny partnera nadawany po zarejestrowaniu konta (dostępny po zalogowaniu).
  22. */
  23. 'userid' => '632',
  24. /*
  25. @nazwa: serviceid
  26. @opis: numer identyfikacyjny kanału SKS dostępny w sekcji "Kanały SMS Premium"
  27. */
  28. 'serviceid' => '1853',
  29. /*
  30. @nazwa: text
  31. @opis: treść wiadomości, która zostaje zainicjowana przez partnera w panelu. Pamiętaj, że błąd powoduje nierozliczenie płatności!
  32. */
  33. 'text' => 'MSMS.SLINK',
  34. );
  35.  
  36.  
  37. $data[] = array("netto" => 0.50,"number" => 7055,"product" => "7");
  38. $data[] = array("netto" => 1.00,"number" => 7136,"product" => "14");
  39. $data[] = array("netto" => 2.00,"number" => 7255,"product" => "21");
  40. $data[] = array("netto" => 3.00,"number" => 7355,"product" => "28");
  41. /*
  42. Weryfikujemy, czy formularz został wysłany
  43. */
  44. if (isset($_POST['send']) && isset($_POST['code'])) {
  45.  
  46. $code = addslashes($_POST['code']);
  47.  
  48. /*
  49. Weryfikujemy poprawność kodu
  50. */
  51. if (preg_match("/^[A-Za-z0-9]{8}$/", $code)) {
  52.  
  53. $a = array();
  54. $b = array();
  55.  
  56. foreach ($data as $cfg) {
  57. array_push($a, $cfg['number']);
  58. $b[$cfg['number']] = $cfg['product'];
  59. }
  60.  
  61. /*
  62. Łączymy się z serwerem MicroSMS
  63. */
  64. $api = @file_get_contents("http://microsms.pl/api/v2/multi.php?userid=" . $settings['userid'] . "&code=" . $code . '&serviceid=' . $settings['serviceid']);
  65.  
  66.  
  67. /*
  68. Jeśli wystąpi problem z połączeniem, skrypt wyświetli błąd.
  69. */
  70. if (!isset($api)) {
  71. $errormsg = 'Nie można nawiązać połączenia z serwerem płatności.';
  72. } else {
  73. /*
  74. Dekodujemy odpowiedź serwera do formatu json
  75. */
  76. $api = json_decode($api);
  77.  
  78. /*
  79. Sprawdzamy czy odpowiedź na pewno jest w formacie json
  80. */
  81. if (!is_object($api)) {
  82. $errormsg = 'Nie można odczytać informacji o płatności.';
  83. } else if (isset($api->error) && $api->error) {
  84. $errormsg = 'Kod błędu: ' . $api->error->errorCode . ' - ' . $api->error->message;
  85. } else if ($api->connect == FALSE) {
  86. $errormsg = 'Kod błędu: ' . $api->data->errorCode . ' - ' . $api->data->message;
  87. } else if (!isset($b[$api->data->number])) {
  88. $errormsg = 'Przesłany kod jest nieprawidłowy, spróbuj ponownie.';
  89. }
  90. }
  91.  
  92. if (!isset($errormsg) && isset($api->connect) && $api->connect == TRUE) {
  93. /*
  94. Jeśli kod jest prawidłowy, wydajemy produkt
  95. */
  96. if ($api->data->status == 1) {
  97. $okmsg = $b[$api->data->number];
  98.  
  99. // Tutaj możesz również wykonywać inne operacje
  100. // Np. dodać zapytanie mysql, wysłać maila itp.
  101.  
  102. $zmienna = time() +(86400 * $okmsg) ;
  103. $wst = date('Y-m-d');
  104. $za_godz = date('Y-m-d', $zmienna);
  105. $url_ptc = $_POST['link'];
  106. $opis = $_POST['opis'];
  107.  
  108. mysql_query("INSERT INTO poz (link, nazwa, data_kn, data_ws) VALUES( '$url_ptc', '$opis', '$za_godz', '$wst')");
  109.  
  110.  
  111.  
  112. } else {
  113. $errormsg = 'Przesłany kod jest nieprawidłowy, spróbuj ponownie.';
  114. }
  115. }
  116.  
  117. } else {
  118. $errormsg = 'Przesłany kod jest nieprawidłowy, przepisz go ponownie.';
  119. }
  120. }
  121.  
  122. ?>
  123. <div id="page">
  124. <div class="center title">Zakup produktu - link w stopce</div>
  125. <br/>
  126. <div class="center">
  127.  
  128. <table id="table" width="100%">
  129. <tr class="header">
  130. <td>Cena:</td>
  131. <td>Numer:</td>
  132. <td>Treść:</td>
  133. <td>Dni:</td>
  134. </tr>
  135. <?php foreach($data as $var) { ?>
  136. <tr class="emp">
  137. <td><?php echo $var['netto']; ?> zł (<?php echo number_format($var['netto'] * ( 1 + 23 / 100 ), 2); ?> z VAT)</td>
  138. <td><?php echo $var['number']; ?></td>
  139. <td><?php echo $settings['text']; ?></td>
  140. <td><?php echo $var['product']; ?></td>
  141. </tr>
  142. <?php } ?>
  143. </table>
  144. <br/>
  145.  
  146. <?php if(isset($okmsg)) { ?><div class="msg"><div class="ok"><ul>Zakupiono</ul></div></div>
  147.  
  148. </div><?php } ?>
  149. <?php if(isset($errormsg)) { ?><div class="msg"><div class="error"><?php echo $errormsg; ?></ul></div></div><?php } ?>
  150.  
  151. <form method="post" action="link.php" >
  152. <input type="hidden" name="send" value="" />
  153. <label>Opis</label>
  154. <input type="text" placeholder="Opis" name="opis" value="" /><br />
  155. <input type="text" placeholder="Link (z http://)" name="link" value="http://" /><br />
  156. <input name="code" placeholder="Kod sms" type="text" />
  157. <button class="button" type="submit">Sprawdź kod</button>
  158. </form>
  159. <br/><br/>
  160. Płatności zapewnia firma <a href="http://microsms.pl/">MicroSMS</a>. <br/>
  161. Korzystanie z serwisu jest jednozanczne z akceptacją <a href="http://microsms.pl/partner/documents/">regulaminów</a>.<br/>
  162. Jeśli nie dostałeś kodu zwrotnego w ciągu 30 minut skorzystaj z <a href="http://microsms.pl/customer/complaint/">formularza reklamacyjnego</a><br/><br/>
  163. <img src="http://microsms.pl/public/cms/img/banner.png">
  164. </div>
  165.  
  166. <br>
  167.  
  168.  
  169.  
  170.  
  171. <?php
  172. include ('inc/stopka.php');
  173. ?>
nospor
Problem nie ma zadnego zwiazku z globalsami... skad ci w ogole przyszedl do glowy ten pomysl?

404 oznacza ze strona nie istnieje. sprawdz czy linki poprawne itp.
tomczyk20151
Cytat(nospor @ 29.09.2016, 11:37:16 ) *
Problem nie ma zadnego zwiazku z globalsami... skad ci w ogole przyszedl do glowy ten pomysl?

404 oznacza ze strona nie istnieje. sprawdz czy linki poprawne itp.

Jak może link nie istenieć skoro odwołanie w formularzu jest do tego samego pliku, który posiada formularz..... facepalmxd.gif
nospor
ja tam widze ze odwolujesz sie do pliku link.php w formularzu. Skad niby mialem wiedziec, ze tez pokazujesz mi tresc pliku link.php.... Wrozka nie jestem :/

Wracajac do problemu:
ino ze moze link jest jakims lamancem a ty ustawiles nagles sciezke bazowa i link prowadzi juz gdzie indziej. porownaj czy klikniety link na pewno prowadzi do dokladnie tej samej sciezki
tomczyk20151
Cytat(nospor @ 29.09.2016, 11:45:03 ) *
ja tam widze ze odwolujesz sie do pliku link.php w formularzu. Skad niby mialem wiedziec, ze tez pokazujesz mi tresc pliku link.php.... Wrozka nie jestem :/

Wracajac do problemu:
ino ze moze link jest jakims lamancem a ty ustawiles nagles sciezke bazowa i link prowadzi juz gdzie indziej. porownaj czy klikniety link na pewno prowadzi do dokladnie tej samej sciezki

Prowadzi do tej samej ścieżki, mam dwa serwery VPS'a z VestaCP tam nie ma problemu, problem pokazuje się, gdy przeniosę stronę na dedyka również z VestaCP, konfiguracja oprowgramowania jest taka sama.
kapslokk
Co masz w plikach gora.php i stopka.php?
tomczyk20151
Cytat(kapslokk @ 29.09.2016, 12:05:55 ) *
Co masz w plikach gora.php i stopka.php?

link do menu/połączenie z bazą danych, sesje
w stopce statystyki i zamówione linki
kapslokk
A próbowałeś usuwać atrybut action formularza? <form method="post" >
tomczyk20151
Cytat(kapslokk @ 29.09.2016, 12:08:52 ) *
A próbowałeś usuwać atrybut action formularza? <form method="post" >

Też, lipa. Mi się zdaje, że to może być coś nie halo z konfiguracją PHP na serwerze
kapslokk
Nie masz jakiegos przekierowania w pliku gora.php? Załaduj sobie formularz w przeglądarce i sprobuj dodać w gora.php
  1. die("ASD");
w pierwszej linii i wyslac formularz.
I jeśli masz htaccess to go pokaż, jeśli nie to vhost.
tomczyk20151
Cytat(kapslokk @ 29.09.2016, 12:15:51 ) *
Nie masz jakiegos przekierowania w pliku gora.php? Załaduj sobie formularz w przeglądarce i sprobuj dodać w gora.php
  1. die("ASD");
w pierwszej linii i wyslac formularz.
I jeśli masz htaccess to go pokaż, jeśli nie to vhost.

Nie mam żadnego przekierowania. Zainstalowalem ponownie maszynę, i vestę. Może gdzieś był błąd. Pozostaje czekać


Temat do zamknięcia. Pomogło przeinstalowanie maszyny, zainstalowanie Debiana + VestaCP.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.