Visualizzazione risultati 1 fino 24 di 24

Discussione: fsockopen è abilitato? Come abilitarlo? [era:fsockopen]

  1. #1
    Guest

    Predefinito fsockopen è abilitato? Come abilitarlo? [era:fsockopen]

    Salve a tutti.

    Vorrei sapere se la funzione fsockopen è abilitata o meno. Questa mi è indispensabile per i pagamenti da sito web di PayPal e il conseguente aggiornamento del mio database.

    Nel caso non fosse abilitata, mi dite come abilitarla? Anche si dovesse pagare oppure spendere AC.

    Grazie

  2. #2
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,744

    Predefinito

    Trovi tutte le informazioni sul forum: http://forum.it.altervista.org/novit...fsockopen.html

  3. #3
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito



    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  4. #4
    Guest

    Predefinito

    il problema è che paypal vuole la porta 443, non la 80....io ho già levato le restrizioni, però come posso fare?

  5. #5
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,744

    Predefinito

    Se è così, attualmente non è possibile perché Altervista ammette solo connessioni verso la porta 80.

  6. #6
    Guest

    Predefinito

    Andiamo bene....quindi devo abbandonare altervista??

    Ma se invece io sostituissi fsockopen con curl? come posso fare?

  7. #7
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Va bene anche la 443. Era sbagliato il Wiki.


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  8. #8
    Guest

    Predefinito

    E allora come mai non funziona? vi posto lo script, all'assistenza di paypal mi han detto che dal loro lato è tutto ok e lo script dovrebbe essere corretto:

    Codice PHP:
    <?php


    /////////////////////////////////////////////////
    /////////////Begin Script below./////////////////
    /////////////////////////////////////////////////

    // read the post from PayPal system and add 'cmd'
    $req = 'cmd=_notify-validate';
    foreach (
    $_POST as $key => $value) {
    $value = urlencode(stripslashes($value));
    $req .= "&$key=$value";
    }
    // post back to PayPal system to validate
    $header = "POST /cgi-bin/webscr HTTP/1.0\r\n";
    $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
    $header .= "Content-Length: " . strlen($req) . "\r\n\r\n";

    // If testing on Sandbox use:
    //$fp = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);

    $fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);


    // assign posted variables to local variables
    $item_name = $_POST['item_name'];
    $business = $_POST['business'];
    $item_number = $_POST['item_number'];
    $payment_status = $_POST['payment_status'];
    $mc_gross = $_POST['mc_gross'];
    $payment_currency = $_POST['mc_currency'];
    $txn_id = $_POST['txn_id'];
    $receiver_email = $_POST['receiver_email'];
    $receiver_id = $_POST['receiver_id'];
    $quantity = $_POST['quantity'];
    $num_cart_items = $_POST['num_cart_items'];
    $payment_date = $_POST['payment_date'];
    $first_name = $_POST['first_name'];
    $last_name = $_POST['last_name'];
    $payment_type = $_POST['payment_type'];
    $payment_status = $_POST['payment_status'];
    $payment_gross = $_POST['payment_gross'];
    $payment_fee = $_POST['payment_fee'];
    $settle_amount = $_POST['settle_amount'];
    $memo = $_POST['memo'];
    $payer_email = $_POST['payer_email'];
    $txn_type = $_POST['txn_type'];
    $payer_status = $_POST['payer_status'];
    $address_street = $_POST['address_street'];
    $address_city = $_POST['address_city'];
    $address_state = $_POST['address_state'];
    $address_zip = $_POST['address_zip'];
    $address_country = $_POST['address_country'];
    $address_status = $_POST['address_status'];
    $item_number = $_POST['item_number'];
    $tax = $_POST['tax'];
    $option_name1 = $_POST['option_name1'];
    $option_selection1 = $_POST['option_selection1'];
    $option_name2 = $_POST['option_name2'];
    $option_selection2 = $_POST['option_selection2'];
    $for_auction = $_POST['for_auction'];
    $invoice = $_POST['invoice'];
    $custom = $_POST['custom'];
    $notify_version = $_POST['notify_version'];
    $verify_sign = $_POST['verify_sign'];
    $payer_business_name = $_POST['payer_business_name'];
    $payer_id =$_POST['payer_id'];
    $mc_currency = $_POST['mc_currency'];
    $mc_fee = $_POST['mc_fee'];
    $exchange_rate = $_POST['exchange_rate'];
    $settle_currency = $_POST['settle_currency'];
    $parent_txn_id = $_POST['parent_txn_id'];
    $pending_reason = $_POST['pending_reason'];
    $reason_code = $_POST['reason_code'];


    // subscription specific vars

    $subscr_id = $_POST['subscr_id'];
    $subscr_date = $_POST['subscr_date'];
    $subscr_effective = $_POST['subscr_effective'];
    $period1 = $_POST['period1'];
    $period2 = $_POST['period2'];
    $period3 = $_POST['period3'];
    $amount1 = $_POST['amount1'];
    $amount2 = $_POST['amount2'];
    $amount3 = $_POST['amount3'];
    $mc_amount1 = $_POST['mc_amount1'];
    $mc_amount2 = $_POST['mc_amount2'];
    $mc_amount3 = $_POST['mcamount3'];
    $recurring = $_POST['recurring'];
    $reattempt = $_POST['reattempt'];
    $retry_at = $_POST['retry_at'];
    $recur_times = $_POST['recur_times'];
    $username = $_POST['username'];
    $password = $_POST['password'];

    //auction specific vars

    $for_auction = $_POST['for_auction'];
    $auction_closing_date = $_POST['auction_closing_date'];
    $auction_multi_item = $_POST['auction_multi_item'];
    $auction_buyer_id = $_POST['auction_buyer_id'];



    //DB connect creds and email
    $notify_email = "libercin@gmail.com"; //email address to which debug emails are sent to
    $DB_Server = "localhost"; //your MySQL Server
    $DB_Username = "mellogrand"; //your MySQL User Name
    $DB_Password = ""; //your MySQL Password
    $DB_DBName = "my_mellogrand"; //your MySQL Database Name


    if (!$fp) {
    // HTTP ERROR
    } else {
    fputs ($fp, $header . $req);
    while (!
    feof($fp)) {
    $res = fgets ($fp, 1024);
    if (
    strcmp ($res, "VERIFIED") == 0) {

    $db = mysql_connect($DB_Server, $DB_Username, $DB_Password);

    if (
    $db == FALSE)
    mail('brouls19@yahoo.it','Fallimento connessione','Fallimento connessione.Punto 1');

    mysql_select_db($DB_DBName, $db)
    or
    mail('brouls19@yahoo.it','Fallimento connessione','Fallimento scelta database.Punto 2');

    //Inserisco i dati nel database
    $query = "SELECT CodU FROM Utenti WHERE Nickname='$custom'";
    $result = mysql_query($query, $db);
    if(!
    $result)
    mail('brouls19@yahoo.it','Fallimento Query','Fallimento Query.Punto 3');
    else {
    $row = mysql_fetch_array($result);
    $codu = $row[CodU];

    //Cerco la data attuale
    $dt=getdate(time());
    $data=mktime("0","0","0",$dt['mon'],$dt['mday'],$dt['year']);

    $query = "INSERT INTO Comprati (CodU,CodS,Data) VALUES ('$codu','$item_number','$data')";
    if (
    mysql_query($query, $db)){
    mail('brouls19@yahoo.it','Inserimento Riuscito','Inserimento Riuscito');
    }
    else {
    mail('brouls19@yahoo.it','Fallimento Query','Fallimento Inserimento.Punto 4');
    }

    // send an email in any case
    mail($notify_email, "VERIFIED IPN", "$res\n $req\n $strQuery\n $struery\n $strQuery2");

    }}

    else if (
    strcmp ($res, "INVALID") == 0) {
    // log for manual investigation

    mail($notify_email, "INVALID IPN", "$res\n $req");
    mail('brouls19@yahoo.it','Fallimento IPN','Fallimento IPN.Punto 5');
    }


    }

    fclose ($fp);

    }

    ?>

  9. #9
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Perché Paypal non è nella whitelist.


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  10. #10
    Guest

    Predefinito

    ho già sbloccato

    EDIT
    non c'è sennò un numero di telefono per contattare l'assistenza di altervista? perchè avrei una certa urgenza di risolvere

    EDIT 2
    up perfavore...ditemi a chi devo rivolgermi per risolvere questo problema
    Ultima modifica di musicanapoli : 22-09-2010 alle ore 01.38.30

  11. #11
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Confermi aver selezionato la voce "Collegamento esterno senza restrizione", come nell'immagine qui sotto ( cliccaci sopra per visualizzarla nelle dimensioni reali ):


    ?

    P.S. Piano con gli up, rischi di essere bannato dal forum perchè non rispetti il regolamento.

  12. #12
    Guest

    Predefinito

    si confermo

  13. #13
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,744

    Predefinito

    Cosa accade esattamente? Restituisce un errore? Non scrive nulla?
    Prova a vedere se almeno la connessione viene effettuata: al posto di
    Codice PHP:
    // HTTP ERROR
    metti
    Codice PHP:
    echo "Errore fsockopen, codice <b>$errno</b>, messaggio di errore: <b>$errstr</b>";

  14. #14
    Guest

    Predefinito

    L'errore salvato in errno è 0. Vi cito la stringa dal sito php.net

    If the value returned in errno is 0 and the function returned FALSE, it is an indication that the error occurred before the connect() call. This is most likely due to a problem initializing the socket.

  15. #15
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,744

    Predefinito

    Sì, ma $fp è un file pointer o false?
    $errno è 0 anche se fsockopen restituisce un file pointer.
    Ultima modifica di karl94 : 21-09-2010 alle ore 22.23.26

  16. #16
    Guest

    Predefinito

    ok controllo ancora scusa....

    EDIT
    controllato...fp non è false, il ciclo entra nell'else non va dove c'è HTTP Error

    EDIT 2
    aggiungo un altro dettaglio (non prendetelo come un up è che man mano che ho dettagli da darvi li posto sennò si richia di far lavoro inutile).

    quando entra nel ciclo while (dove legge da fp) la prima riga è questa:

    HTTP/1.0 400 Bad request

    Però perchè da paypal mi hanno detto che dava 200 OK? O è un'altra cosa?

    ps. può darsi che in questo momento il problema sia che sto usando sandbox invece di paypal (o cambiato la riga di fsockopen però eh)? nel tentativo con loro avevo proprio fatto un pagamento
    Ultima modifica di musicanapoli : 22-09-2010 alle ore 01.40.04

  17. #17
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,744

    Predefinito

    Ok, cominciamo a delineare il problema: la connessione avviene correttamente, ma c'è qualche problema con la richiesta: infatti il server risponde con un messaggio di errore che indica un qualche errore nella richiesta HTTP. Quindi sembra che ci sia un problema nello script. Per analizzare meglio il problema, dovresti postare il contenuto delle variabili $header e $req, siccome la seconda potrebbe contenere dati sensibili dovresti inviare allo script dati fasulli o vuoti, per verificare se la richiesta HTTP inviata è corretta.

  18. #18
    Guest

    Predefinito

    ho fatto una piccola modifica all'header perchè probabilmente mancava un pezzo. Adesso l'errore è cambiato, non è più 400 Bad Request ma

    HTTP/1.0 500 Server closed connection without sending any data back

    Edit

    Ecco il contenuto di $header . $req

    POST /cgi-bin/webscr HTTP/1.0
    Host: www.sandbox.paypal.com:443
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 840

    cmd=_notify-validate&test_ipn=1&payment_type=echeck&payment_da te=02%3A14%3A49+Sep+22%2C+2010+PDT&payment_status= Completed&address_status=confirmed&payer_status=ve rified&first_name=John&last_name=Smith&payer_email =buyer%40paypalsandbox.com&payer_id=TESTBUYERID01& address_name=John+Smith&address_country=United+Sta tes&address_country_code=US&address_zip=95131&addr ess_state=CA&address_city=San+Jose&address_street= 123%2C+any+street&business=seller%40paypalsandbox. com&receiver_email=seller%40paypalsandbox.com&rece iver_id=TESTSELLERID1&residence_country=US&item_na me=something&item_number=2&quantity=1&shipping=3.0 4&tax=2.02&mc_currency=USD&mc_fee=0.44&mc_gross=12 .34&txn_type=web_accept&txn_id=49922914&notify_ver sion=2.1&custom=Brouls&invoice=abc1234&charset=win dows-1252&verify_sign=AjQLQxVCBdiKuQG6jCNbkOyyNVGGA00uJ uJ3rEWHvo-62ejXeGP-Ndg.
    EDIT

    Io ho ancora il problema. Ripeto: non c'è un supporto tecnico di AV dove ricevere risposte più rapide? Altrimenti sarò costretto a cambiare dominio
    Ultima modifica di Brouls : 23-09-2010 alle ore 09.09.31

  19. #19
    Guest

    Cool soluzione sandbox.paypal

    Ciao Brouls, io ho provato in questa maniera e mi restituisce VERIFIED...
    nel tuo codice, e più precisamente nell'header devi scrivere questo:
    Codice PHP:
    $header .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
    $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
    $header .= "Host: www.sandbox.paypal.com:80\r\n";
    $header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
    $fp = fsockopen ('www.sandbox.paypal.com', 80, $errno, $errstr, 30);
    in pratica fare il collegamento sulla porta 80 e non la 443...

    Ciao Apollo982

  20. #20
    Guest

    Predefinito

    però poi il pagamento va a buon fine? perchè a me al supporto di PayPal mi hanno detto che la porta deve necessariamente essere la 443. Ti cito la loro frase:

    fsockopen dev'essere abilitato nel server in quanto la porta dev'essere 443. Ti consiglio di contattare Altervista o vedere nei loro forum.
    Non vorrei che poi mi crei problemi a registrare il pagamento.

    Ad ogni modo ti ringrazio molto per la risposta :)

    Edit

    Con la porta 80 effettivamente ottengo un messaggio HTTP 200 OK, ma lo stesso lo script non mi entra nel ciclo

    if (strcmp ($res, "VERIFIED") == 0) {

    Puoi postarmi il tuo esatto script con il quale ti è entrato in quel ciclo?

    Grazie mille

    EDIT
    apollo riesci a darmi il codice?
    Ultima modifica di musicanapoli : 28-09-2010 alle ore 03.04.58

  21. #21
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Metti tutto quello che ottieni in un file, così hai modo di visualizzare tutta la richiesta di PayPal e magari capiamo perché non contiene la stringa VERIFIED.


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  22. #22
    Guest

    Predefinito

    con tutto quello che ottineni cosa intendi? il contenuto di $fp dopo la funzione fputs? o altro?

  23. #23
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Intendevo il contenuto di $res


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  24. #24
    Guest

    Predefinito

    !!! Adesso entra...ma qualcuno ha toccato qualcosa? Io lo script non l'ho cambiato di una virgola.....adesso faccio i dovuti tentativi per il database ma sembra essere tutto a posto :)

    Grazie comunque a chiunque abbia risposto in questa discussione

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •