Joob 1 Denunciar post Postado Janeiro 15, 2015 Boas, Tenho um problema em que, eu ao utilizar este código: $clid = $_SESSION['clientid']; if(isset($_GET['id'])) { if($_GET['id'] == "paypal") { function urlz() { $currentPath = $_SERVER['PHP_SELF']; $pathInfo = pathinfo($currentPath); $hostName = $_SERVER['HTTP_HOST']; $protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5))=='https://'?'https://':'http://'; return $protocol.$hostName.$pathInfo['dirname'].""; } Preciso de fazer com que quando se efectua o pagamento, os créditos do user aumentem/sejam actualizados ou seja.. já fiz das seguintes formas, mas ocorrem 2 problemas.. Quando utilizo esta forma: $clid = $_SESSION['clientid']; if(isset($_GET['id'])) { mysql_query("UPDATE `client` WHERE clientid='$clid'"); if($_GET['id'] == "paypal") { function urlz() { $currentPath = $_SERVER['PHP_SELF']; $pathInfo = pathinfo($currentPath); $hostName = $_SERVER['HTTP_HOST']; $protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5))=='https://'?'https://':'http://'; return $protocol.$hostName.$pathInfo['dirname'].""; } É efectuado à mesma o pagamento, mas não é actualizado os créditos, é como se não fizesse nada. Mas quando utilizo esta forma: $clid = $_SESSION['clientid']; if(isset($_GET['id'])) { mysql_query("UPDATE `client` SET credits=credits+'$paypal_credits' WHERE clientid='$clid'"); if($_GET['id'] == "paypal") { function urlz() { $currentPath = $_SERVER['PHP_SELF']; $pathInfo = pathinfo($currentPath); $hostName = $_SERVER['HTTP_HOST']; $protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5))=='https://'?'https://':'http://'; return $protocol.$hostName.$pathInfo['dirname'].""; } O pagamento é efectuado, e a actualização dos créditos também é feita, mas o problema está.. Quando se faz refresh na páginas, fazendo ou não o pagamento, os créditos aumentam automaticamente com qualquer refresh. Conseguem-me dar uma dica ? Abraço, Joob Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Janeiro 15, 2015 Após o processamento, redirecione o usuário para outra página. Assim, o refresh vai carregar apenas a tela de sucesso, sem executar o UPDATE. PS: funções mysql_* estão obsoletas a desde o PHP 5.5. Prefira usar MySQLi ou PDO. Veja mais aqui: http://www.ultimatephp.com.br/php-por-que-nao-utilizar-funcoes-mysql Compartilhar este post Link para o post Compartilhar em outros sites
Joob 1 Denunciar post Postado Janeiro 16, 2015 O redirecionamento não está a funcionar como deve de ser .. Eu agora estou a usar uma outra página, para quando se clica no botão do paypal (Confirmar Pagamento), para ele depois ir para outra página, para fazer o tal update.. Mas tenho o mesmo da seguinte forma, em que não está a ser bem sucedida: require("configuration.php"); require("include.php"); @$item_number = $_POST["item_number"]; @$amount = $_POST["amt"]; @$id = $_GET['id']; if ((!$item_number)) { echo "The item_number parameter is empty!"; exit; } if(@$_SESSION['paid'] == "unpaid") { die(); } mysql_query("UPDATE client SET credits=credits+'$paypal_credits' WHERE clientid='$id'"); header('Location: index.php'); @$_SESSION['paid'] = 'unpaid'; exit(); Ele à mesma assim não faz o update, não actualiza a zona dos créditos, e o principal é que não faz o redireccionamento da página, com o header, o que deveria de ir directamente para a página inicial digamos assim.. Abraço, Joob Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Janeiro 16, 2015 Se você usar o "@" em todo lugar, nunca verá as mensagens de erro. O "@" deve ser usado com cuidado, apenas quando estritamente necessário. Veja: http://rberaldo.com.br/boas-praticas-ao-programar-2/#arroba Você tem que retirar esses "@" e também fazer um debug pra ver se está entrando em algum desses if's que encerram a execução Compartilhar este post Link para o post Compartilhar em outros sites
Joob 1 Denunciar post Postado Janeiro 16, 2015 Obrigado Beraldo, Ficou resolvido com a sua grande ajuda de sempre ! ;) Abraço, Joob Compartilhar este post Link para o post Compartilhar em outros sites
Joob 1 Denunciar post Postado Março 19, 2015 Boas novamente.. Descobri que tenho o mesmo problema, quando clico só no "Paypal" e não nos outros menus.. só mesmo no "Paypal".. ou seja.. tenho este código $clid = $_SESSION['clientid']; if(isset($_GET['id'])) { mysql_query("UPDATE `client` SET credits=credits+'$paypal_credits' WHERE clientid='$clid'"); if($_GET['id'] == "paypal") { function urlz() { $currentPath = $_SERVER['PHP_SELF']; $pathInfo = pathinfo($currentPath); $hostName = $_SERVER['HTTP_HOST']; $protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5))=='https://'?'https://':'http://'; return $protocol.$hostName.$pathInfo['dirname'].""; } E quando faço refresh à página (onde tenho este código), os créditos aumentam .. vai sempre aumentando assim que faço refresh.. Como posso fazer um block, pra que seja válido só para quando se paga.. ? Abraço, Joob Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Março 19, 2015 faça um redirecionamento após o update Compartilhar este post Link para o post Compartilhar em outros sites
Joob 1 Denunciar post Postado Março 19, 2015 Coloco - header('Location: index.php'); - e continua à mesma.. Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Março 19, 2015 Mostre como ficou seu código. Você deve ter colocado o header no local errado Compartilhar este post Link para o post Compartilhar em outros sites
Joob 1 Denunciar post Postado Março 19, 2015 Acabei de testar desta forma $clid = $_SESSION['clientid']; $resultupdate=mysql_query("UPDATE `client` SET credits=credits+'$paypal_credits' WHERE clientid='$clid'"); $num_rows = mysql_num_rows($resultupdate); if ( $num_rows > 0 ){ // do something with your SQL result here } else { // redirect to result.php if no rows were found. header('location: test.php'); } if(isset($_GET['id'])) { if($_GET['id'] == "paypal") { function urlz() { $currentPath = $_SERVER['PHP_SELF']; $pathInfo = pathinfo($currentPath); $hostName = $_SERVER['HTTP_HOST']; $protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5))=='https://'?'https://':'http://'; return $protocol.$hostName.$pathInfo['dirname'].""; } E não resultou.. Testei destas formas $clid = $_SESSION['clientid']; mysql_query("UPDATE `client` SET credits=credits+'$paypal_credits' WHERE clientid='$clid'"); header('location: test.php'); if(isset($_GET['id'])) { if($_GET['id'] == "paypal") { ----------------------------------- $clid = $_SESSION['clientid']; if(isset($_GET['id'])) { mysql_query("UPDATE `client` SET credits=credits+'$paypal_credits' WHERE clientid='$clid'"); header('location: test.php'); if($_GET['id'] == "paypal") { ----------------------------------- $clid = $_SESSION['clientid']; if(isset($_GET['id'])) { if($_GET['id'] == "paypal") { mysql_query("UPDATE `client` SET credits=credits+'$paypal_credits' WHERE clientid='$clid'"); header('location: test.php'); Ainda não resultou.. Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Março 19, 2015 $clid = $_SESSION['clientid']; mysql_query("UPDATE `client` SET credits=credits+'$paypal_credits' WHERE clientid='$clid'"); header( 'Location: test.php?id=' . $clid ); exit; Na test.php você faz a verificação do $_GET['id'] e tudo mais O script acima deve apenas fazer o UPDATE, nada mais Compartilhar este post Link para o post Compartilhar em outros sites
Joob 1 Denunciar post Postado Março 19, 2015 Não resultou.. basta eu clicar no botão e actualiza logo os créditos.. Posso tentar pelo sucesso do paypal.. em vez desse metodo.. So que tenho o código desta forma $item_number = $_POST["item_number"]; $amount = $_POST["amt"]; $id = $_GET['id']; if ((!$item_number)) { echo "The item_number parameter is empty!"; exit; } if($_SESSION['paid'] == "unpaid") { die(); } mysql_query("UPDATE client SET credits=credits+'$paypal_credits' WHERE clientid='$id'"); header('Location: index.php'); $_SESSION['paid'] = 'unpaid'; exit(); E após o pagamento (página que será redireccionada), dá-me este erro: The item_number parameter is empty! Mas eu tenho o ...... no form do botão do paypal: <input type="hidden" name="item_number" value="'. $paypal_credits.'"> Compartilhar este post Link para o post Compartilhar em outros sites
Joob 1 Denunciar post Postado Março 19, 2015 Beraldo, já consegui resolver o problema ;) ! Utilizei uma outra forma para o sucesso, em de usar essa que indiquei a cima.. Ficou resolvido ;) Obrigado também pelas dicas ;) Compartilhar este post Link para o post Compartilhar em outros sites