Close
Duke shfaqur rezultatin -9 deri 0 prej 8
  1. #1
    i/e regjistruar Maska e bler2
    Anëtarësuar
    28-01-2006
    Postime
    23

    PHP - Si të kaloj të dhënat në disa faqe

    Jam duke punu diqka ne php, por e kam kete problem:

    Kam nje html form "test.html" e cila duhet te plotesuar disa te dhena, dhe keto te dhena pastaj dergohen ne nje klase "test.php". Ne klasen "test.php" me duhet qe te shtoj edhe te dhena shtese dhe ti dergoj pastaj ne server. Kam provuar me "header" dhe funksiononte por pastaj ne querystring lexohej gjithqka.

    Problemi qendron se si mundem qe perveq ndryshoreve qe i dergoj ne "test.php" te shtoj edhe ndryshore shtese psh:

    test.php:
    //ndryshoret qe vijn nga test.html
    $n1=$_REQUEST['n1'];
    $n2=$_REQUEST['n2'];
    $n3=$_REQUEST['n3'];
    $n4=$_REQUEST['n4'];

    //ndryshoret qe i shtohen ne test.php

    $n5 = "abc";
    $n6 = "123";

    //tani te gjitha keto te dhena si mund te dergohen ne server?

    Shpresoj ne ndihmen Tuaj!

  2. #2
    Programues Softueresh Maska e edspace
    Anëtarësuar
    04-04-2002
    Vendndodhja
    Filadelfia, SHBA
    Postime
    2,565
    Me sa kuptova, ti do që të kalosh disa të dhëna në një formular, pa i parë vizitori. Ka disa mënyra për të bërë këtë gjë.

    I. GET/POST

    Mënyra e parë është duke i hedhur të dhënat në një fushë të fshehur (hidden) në formular. Nëse formulari përdor metodën GET për të dërguar të dhënat, të gjitha fushat, përfshirë ato të fshehurat, do shfaqen në URL dhe vizitori mund t'i shikojë shumë lehtë. Nëse përdor metodën POST, fushat nuk shfaqen në URL.

    Ja një shembull i formularit:

    HTML e Formularit
    Kodi:
    
      
        Formulari
      
      
        
    Fusha:
    Tani në skriptin test.php do kemi dy fusha, $_REQUEST['fusha'] dhe $_REUEST['fusha_fshehur'].

    Metoda POST nuk i shfaq të dhënat në URL, por vizitori mund t'i shikojë ato nëse hap kodin HTML të formularit, ose nëse përndor një program që përgjon/regjistron komunikimet e shfletuesit (IE, Firefox) me serverin.


    II. Sesionet

    Mënyra tjetër për të shkëmbyer informacion midis disa kërkesave (faqeve) është duke përdorur sesionet (sessions). Sesionet mund t'i mendosh njësoj si kërkesat (requests), por të dhënat e sesioneve ruhen vetëm në server dhe nuk i dergohen vizitorit.

    Më poshtë po jap një shembull se si përdoren sesionet. Vizitori do hapë faqen e formularit. Të dhënat do dërgohen tek test.php.

    HTML e Formularit - pa fusha të fshehura
    Kodi:
    
      
        Formulari
      
      
        
    Fusha:

    test.php do i ruajë të dhënat e formularit sesion ($_SESSION) bashkë me të dhënat shtesë dhe do e drejtojë vizitorin tek faqja test2.php.

    test.php
    Kodi PHP:
    <?php

    // session_start duhet të jetë në krye të çdo faqeje që përdor sesionet
    session_start();

    // ruajme të dhënat e formularit në sesion
    $_SESSION['fusha'] = $_REQUEST['fusha']; 

    // shtojme disa të dhëna të tjera
    $_SESSION['fusha_fshehur'] = 'fushe e shtuar ne test.php'

    // drejtoje vizitorin tek test2.php
    header('Location: test2.php');

    ?>

    test2.php nuk merr të dhëna nga test1.php, por i lexon ato nga sesioni dhe i nxjerr në faqe.

    test2.php
    Kodi PHP:
    <?php

    // session_start duhet të jetë në krye të çdo faqeje që përdor sesionet
    session_start();

    // marrim te dhenat e ruajtura ne sesion
    $fusha $_SESSION['fusha']; 
    $fusha_fshehur $_SESSION['fusha_fshehur']; 

    ?>

    fusha = <?=$fusha?> 
    fusha_fshehur = <?=$fusha_fshehur?>

    Rezultati
    Kodi:
    fusha = fusha e formularit
    fusha_fshehur = fushe e shtuar ne test.php

    Pra, nëpërmjet sesioneve kemi kaluar informacion nga test.php në test2.php pa dijeninë e vizitorit. Ndryshe nga mënyra GET/POST, të dhënat e shtuara në test.php nuk dërgohen tek vizitori dhe ai nuk mund t'i shikojë ato.

    Para se të përdorësh sesionet, duhet të lexosh më shumë se si funksionojnë dhe cilat janë avantazhet dhe disavantazhet e tyre. Fillo me faqen php.net dhe ndiq ndonjë guidë në internet për të mësuar më shumë. Sigurisht që mund të pyesësh edhe këtu nëse vazhdon të jesh i paqartë.
    Edi

  3. #3
    i/e regjistruar Maska e bler2
    Anëtarësuar
    28-01-2006
    Postime
    23

    Fillimisht faleminderit per sqarime Edspace

    Kjo qka ke spjegu ka qene mjfat e qarte por jo edhe zgjidhje per problemin qe e kam. Tani po sqarohem me shume. PO nisem nga HTML formulari qe shfrytezuat Ju.

    Kodi:
    
      
        Formulari
      
      
        
    Fusha:
    Ne menyre qe "fusha_fshehur" mos te shihet atehere, Une e bera nje skripte test.php ne te cilen dergohen fushat qe lejohen te shihen dhe prej aty te bashkohet edhe "fusha_fshehur" dhe pataj te postohen. Menyra II qe Ju spjeguat, pra ajo me Sessione kishte me qene ideal por ne kete rast nuk mund t'a shfrytezoj sepse prej skriptit test.php Une te dhenat i postoj drejt e ne nje URL dhe nuk kam mundesi qe te perdor source code-in e tyre. Ata krejt qka me kan ofruar eshte qe te dhenat ti dergoj permes URL, pra si: "http: //www.shembulli.com/index.php?username=useriQeKam&password=passiQeKam..."

    Tani a do te kishte nje mundesi qe te dhenat qe postohen ne test.php dhe atty te shtohet edhe "fusha_fshehur" dhe pastaj prej aty te postohen ne URL, sigurisht metoda qe shfrytezohet do te jete method="post", ne meyre qe mos te paraqiten te dhenat si "querystring".

    test.php
    Kodi:
    Kam shfletuar shume edhe internetin keto dite por nuk arrita qe te gjej nje zgjidhje per kete!

  4. #4
    Programues Softueresh Maska e edspace
    Anëtarësuar
    04-04-2002
    Vendndodhja
    Filadelfia, SHBA
    Postime
    2,565
    Nëse ju kam kuptuar qartë, ju doni të merrni disa të dhëna nga vizitori, pastaj të shtoni disa të dhëna të tjera, dhe të gjitha së bashku t'i dërgoni në një faqe të jashtme, e clia nuk mirëmbahet nga ju.

    Si shembull:
    1. Vizitori hap faqen tuaj tek
    2. Të dhënat dërgohen tek
    3. Ju shtoni disa të dhëna të tjera dhe i dërgoni tek
    http://adresa-e-tjetrit.com/index.php?fusha=fushaEVizitorit&fusha_fshehur=fushaEFshehur

    Nëse shembulli më lart është i saktë, atëherë funksionet standarde të PHP-së nuk ju kryejnë punë. E vetmja mundësi është nëpërmjet librarisë Curl, librari shtesë që duhet ta instaloni në PHP. Lexoni udhëzimet për curl në php.net. Me curl mund të merrni rezultatin e faqes ku do dërgoni të dhënat, por ky rezultat do jetë në server, jo tek vizitori. Vizitorin mund ta ridrejtoni në një faqe tjetër me header() pasi të dërgoni të dhënat tek http://adresa-e-tjetrit.com.

    Në shembujt më lart kishit përdorur fjalëkalimin në URL. Kjo nuk rekomandohet sepse adresa URL mund të shikohet nga shumë persona në rrjet dhe ata mësojnë fjalëkalimin tuaj.
    Edi

  5. #5
    i/e regjistruar Maska e Gepardi
    Anëtarësuar
    30-10-2002
    Vendndodhja
    Tiranë
    Postime
    169
    Pershendetje.

    Po te sugjeroj nje menyre te shkurter per ta zgjidhur kete situate duke perdorur pikerisht CURL (Web Serveri duhet ta kete te instaluar kete librari).

    Se pari shkarko klasen e meposhtme e cila enkapsulon shumicen e veprimeve me CURL dhe do te shkurtoje shume pune:

    http://www.phpclasses.org/browse/package/3329.html

    Pastaj ne faqen test.php qe perpunon te dhenat e ardhura nga formulari :

    Kodi PHP:
    require_once("curl_http_client.php"); //Pathi ku ndodhet klasa e shkarkuar me siper

    $curl = new Curl_HTTP_Client();

    $post_data = array("fusha"=>$_POST['fusha'],
                               
    "fusha_fshehur"=>"vlera_fushes_se_fshehur");

    $rezultati $curl->send_post_data("http://www.adresa.com/script.php"$post_data); 

    //Tek rezultati do te ruhet rezultati i kthyer nga POST Request 

  6. #6
    i/e regjistruar Maska e bler2
    Anëtarësuar
    28-01-2006
    Postime
    23

    Pershendetje Edscape dhe Gepardi

    Tani problemi eshte mu ashtu siç edhe e keni kuptuar Ju. Une provova menyren qe e ceku Gepardi meqe edhe mu duke me e thjeshte, por nuk e di nese jam duke e perdorur drejt. Tani problemi qendron tek ndryshorja $rezultati, ku ruhet rezultati i kthyer nga POST. Si duhet qe te ridrejtohem tek URL ku me duhet qe t'i dergoj te dhenat?

    Me fjale tjera, qka te beje me ndryshoren $rezultati, ne menyre qe ajo te me ridrejtoje ne URL:
    $rezultati = $curl->send_post_data("http://www.adresa.com/script.php", $post_data);
    Faleminderit paraprakisht!
    Ndryshuar për herë të fundit nga bler2 : 06-08-2007 më 19:47

  7. #7
    Programues Softueresh Maska e edspace
    Anëtarësuar
    04-04-2002
    Vendndodhja
    Filadelfia, SHBA
    Postime
    2,565
    Pikërisht aty qëndron problemi. Ndryshorja $rezultati pëmban HTML e nxjerrë nga faqja ku ju dërguat të dhënat. Ju nuk mund ta nxirrni këtë tek vizitori sepse HTML mund të përmbajë imazhe e lidhje të përshtatura për atë faqe.

    Nëse ju përdorni header dhe e drejtoni vizitorin tek faqja ku dërguat të dhënat, atëherë informacioni do dërgohet dy herë, por dhe URL do shfaqet tek vizitori. Kështu që dhe kjo nuk është zgjidhje.

    E vetmja mundësi është të drejtoni vizitorin në një faqe statike, qoftë kjo faqe në sajtin tuaj apo në atë ku keni dërguar të dhënat. Por faqja duhet të ketë një URL pa të dhëna të fshehura. Shikoni URL e faqes që kthehet mbrapsh pasi ju dërgoni të dhënat. Nëse kjo URL nuk përmban të dhëna të fshehura, atëherë ju mund ta ridrejtoni vizitorin aty me header.
    Edi

  8. #8
    i/e regjistruar Maska e Gepardi
    Anëtarësuar
    30-10-2002
    Vendndodhja
    Tiranë
    Postime
    169
    Nuk mundet thjesht ta ridrejtosh perdoruesin tek faqja ku poston te dhenat.
    Ky ridrejtim do ishte nje HTTP GET pra nuk do te sherbente per gje.

    Nese eshte e mundur te alternohet menyra e postimit ne faqen e jashtme mund te behej dicka a tille. Pasi te kesh postuar te dhenat tek faqja e jashtme (www.faqja.com/script.php) te gjenerohet nje ID (Session ID) i cili kthehet ne momentin e postimit te variablave pra do te ruhet tek variabla $rezultati ne shembullin e mesiperm.

    Me pas mjafton ta ridrejtosh perdoruesin tek nje adrese e tille www.faqja.com/script.php?sess=$rezultati

    Kjo menyre fsheh variablat qe postohen per perdoruesin.

    Nese nuk eshte e mundur te alternohet faqja e jashtme atehere e vetmja menyre mbetet te perdoresh nje faqe te ndermjetme me HIDDEN fields ne formular. Edhe pse nuk eshte menyra me e mire besoj se nuk ka rruge tjeter sepse je i detyruar te kryesh nje HTTP POST ne faqen e jashtme.

    Nese do marresh parasysh qe perdoruesit e kane te aktivizuar javascript duke shtuar nje rresht te tille
    Kodi:
    mund te besh qe formulari te "vetesubmitet".

Tema të Ngjashme

  1. Prejardhja e emrit Kosovë dhe emrat e qyteteve te saj
    Nga Vito në forumin Arkeologji/antropologji
    Përgjigje: 48
    Postimi i Fundit: 28-01-2010, 06:43
  2. Si të ruaj të dhënat e formularit?
    Nga PcCrack3r në forumin Arti i programimit
    Përgjigje: 13
    Postimi i Fundit: 14-12-2007, 15:14
  3. Parailiret - Iliret - Arberit _M.Korkuti
    Nga BARAT në forumin Historia shqiptare
    Përgjigje: 3
    Postimi i Fundit: 02-10-2006, 20:53
  4. Yahoo, Hotmail - Te dhenat private ne rrezik...
    Nga benseven11 në forumin Lajme nga informatika
    Përgjigje: 2
    Postimi i Fundit: 16-04-2004, 10:00
  5. Informacion mbi të dhënat e kompjuterit
    Nga benseven11 në forumin Trajnim & leksione
    Përgjigje: 5
    Postimi i Fundit: 01-10-2003, 10:23

Regullat e Postimit

  • Ju nuk mund të hapni tema të reja.
  • Ju nuk mund të postoni në tema.
  • Ju nuk mund të bashkëngjitni skedarë.
  • Ju nuk mund të ndryshoni postimet tuaja.
  •