PDA

View Full Version : [Help] PHP



Jarkheld
12th January 2015, 16:03
Ciao a tutti :D
c'è qualcuno abbastanza ferrato in php che è in grado e sarebbe così gentile di darmi una mano con un problemino di dichiarazione di variabili? Niente di complicato per chi ha una pò pratica :rain:

ps: non so se è la sezione giusta ma mi sembrava quella + adatta

Rise-the-Sky
13th January 2015, 13:08
La sezione è quella giusta ma è il modo di creare il thread che è sbagliato.

Avresti dovuto porre direttamente la domanda e probabilmente a quest'ora qualcuno passando di quà ti avrebbe già risposto (soprattutto se come dici è una cosa abbastanza semplice).

Viceversa chiedere se la gente sarebbe disposta a rispondere a una tua futura domanda fa solo perdere la pazienza e ti fa finire per essere ignorato.

Non vorrei essere offensivo ma non capisco come puoi non esserci arrivato da te dopo 7k post.. tu stesso saresti invogliato a rispondere a un post simile a quello che hai fatto?

Hador
13th January 2015, 14:41
ciao, non usare php. È il male. Baci :nod:

Bilu
13th January 2015, 20:35
posta pure

Jarkheld
14th January 2015, 01:13
La sezione è quella giusta ma è il modo di creare il thread che è sbagliato.
Avresti dovuto porre direttamente la domanda e probabilmente a quest'ora qualcuno passando di quà ti avrebbe già risposto (soprattutto se come dici è una cosa abbastanza semplice).
Viceversa chiedere se la gente sarebbe disposta a rispondere a una tua futura domanda fa solo perdere la pazienza e ti fa finire per essere ignorato.
Non vorrei essere offensivo ma non capisco come puoi non esserci arrivato da te dopo 7k post.. tu stesso saresti invogliato a rispondere a un post simile a quello che hai fatto?

dai, fai il bravo. Se devi scrivere per rompere il cazzo non scrivere per niente, la stragrande maggioranza del resto del mondo te ne sarà garata.


posta pure

grazie mille :D allora la questione è questa, cercherò di essere il più chiaro possibile. Questo è un codice per un form di default che mi serve a pasare determinati valori al server della bnl per effettuare pagamenti online:

<? include('../bnl/ipg-util.php'); ?>

<form method="post" action=" https://pftest.bnlpositivity.it/service/">
<input type="hidden" name="txntype" value="AUTH">
<input type="hidden" name="timezone" value="CET">
<input type="hidden" name="txndatetime" value="<?php echo getDateTime() ?>">
<input type="hidden" name="hash" value="<?php echo createHash("10.00","EUR",inserirevaloreassegnatotxndatetime) ?>">
<input type="hidden" name="storename" value="xxxxxxx_S">
<input type="hidden" name="mode" value="payonly">
<input type="hidden" name="currency" value="EUR">
<input type="hidden" name="language" value="IT">
<input type="hidden" name="responseSuccessURL" value="https://www.google.it/">
<input type="hidden" name="responseFailURL" value="http://stackoverflow.com/">
<input type="hidden" name="chargetotal" value="10.00">
<input type="submit" value="Acquista">
</form>


il problema lo ho con "inserirevaloreassegnatotxndatetime" Qui andrebbe inserito il valore di "txndatetime" della riga antecedente, credo tramite una variabile, non potendo però usare di nuovo <?php echo getDateTime() ?> poichè se passasse anche solo 1 secondo i due valori non corrisponderebbero ed il calcolo dell'hash genererebbe errore.

La variabile $dateTime è valorizzata all'interno del file incluso nella prima linea ipg-util.php:

$dateTime = date("Y:m:d-H:i:s");

qual'è la soluzione migliore secondo voi? mi scuso a priori se ho scritto qualcosa di astruso ma non sono ferratissimo in php :D

Rise-the-Sky
14th January 2015, 10:50
Il punto è che se avessi scritto subito il problema che aveva la risposta te la davamo già ieri..o comunque si sarebbe fatto qualcosa di utile invece fin ora hai raccolto il mio post polemico, quello da Rubylover di hador (che magari lavora con tutt'altro ma il post ricacla l'attuale moda ruby figo, php cacca) e un post di disponibilità ma senza possibilità di intervento di Bilu.

Cmq nel tuo caso dovresti guardare bene cosa fa la funzione getDateTime all'interno del file ipg-util.php, perchè dalla situazione descritta è molto probabile che il codice di getDateTime sia un semplicissimo

{ return $dateTime; }

ovvero non ci sia un ricalcolo della variabile. Percui le tue preoccupazioni non avrebbero luogo di esistere e potresti appunto usare nuovamente la funzione per riottenere il valore che ti serve..ovviamente senza anteporre "echo" che serve per la scrittura a video.

Ovvero verrebbe così:

"<?php echo createHash("10.00","EUR",getDateTime() ) ?>">


Altrimenti dovresti salvarti in una variabile il valore della prima chiamata di getDateTime e poi riutilizzarlo ovvero

<input type="hidden" name="txndatetime" value="<?php $miaData = getDateTime(); echo $miaData; ?>">
<input type="hidden" name="hash" value="<?php echo createHash("10.00","EUR", $miaData) ?>">

Hador
14th January 2015, 11:04
non è questione di mode, php penso sia uno dei peggiori linguaggi di programmazione mai inventati :sneer:
es: http://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/

San Vegeta
14th January 2015, 11:20
è un linguaggio di scripting nato quando c'erano i cgi, C e perl... che c***o vuoi che potesse nascerne? :)

non uso php, però la mia risposta sarebbe:
se è vero che getDateTime() è dichiarata altrove, DEVI sapere cosa fa: un modo potrebbe essere fare un
echo getDateTime()
pausa 5 secondi
echo getDateTime()
se ti da lo stesso valore, puoi inferire che la funzione restituisce un valore salvato in precedenza.

Invece dal form a me pare che serva il timestamp del momento in cui viene eseguita la transazione, quindi quando si fa il submit del form: a quel punto la getDateTime() potrebbe essere una funzione che calcola il timestamp e lo formatta come richiesto dal server, quindi chiamate successive alla funzione darebbero risultati diversi.

In entrambi i casi, eseguire una prima volta getDateTime() salvandone il valore in una variabile e poi utilizzare il valore di quella variabile è la risposta che cerchi

Jarkheld
14th January 2015, 14:17
questo è tutto quello che ho nell'altro file, ci sono dichiarate sia la funzione createHash che getDateTime :D


<?php

$dateTime = date("Y:m:d-H:i:s");

function getDateTime() {

global $dateTime;

return $dateTime;

}

function createHash($chargetotal, $currency, $dataInseritaNelFieldtxndatetime) {

$storeId = "xxxxxxx_S";

$sharedSecret = "xxxxxxxxxxxxxxxxxxxx";

$stringToHash = $storeId . $dataInseritaNelFieldtxndatetime . $chargetotal . $currency . $sharedSecret;

$ascii = bin2hex($stringToHash);

return sha1($ascii);

}

?>


grazie a tutti per la disponibilità!





In entrambi i casi, eseguire una prima volta getDateTime() salvandone il valore in una variabile e poi utilizzare il valore di quella variabile è la risposta che cerchi

come? :D

San Vegeta
15th January 2015, 21:41
diobono...


<?php
var1 = getDateTime() ;
?>

<input type="hidden" name="txndatetime" value="<?php echo $var1 ?>">
<input type="hidden" name="hash" value="<?php echo createHash("10.00","EUR", $var1) ?>">

Axet
16th January 2015, 02:15
non è questione di mode, php penso sia uno dei peggiori linguaggi di programmazione mai inventati :sneer:
es: http://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/

Mai usato php e non ho letto tutto il link, ma solo alcune parti. Ma che cazzo è sta roba?