Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Funkcja POST Ajax -> PHP
Forum PHP.pl > Forum > PHP
miki3475
Witam, pracowałem nad pewnym skryptem, który sprawdza aktywność kont na pewnym hostingu. Jednak skrypt opierał się na Ajaxie, co niszczyło moje dalsze oczekiwania względem niego. Próbowałem więc zmienić z Ajax'a na PHP funkcje POST jednak bez efektów.

Liczę więc na waszą pomoc.

index.php

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  3. <title>zxc</title>
  4. <style type="text/css">
  5. <!--
  6. body {
  7. background-color: #000000;
  8. }
  9. body,td,th {
  10. color: #FFFFFF;
  11. }
  12. -->
  13. <script type="text/javascript" language="javascript" src="ajax.js"></script>
  14. </head>
  15.  
  16. <div align="center"><h2>Skrypt</h2>
  17. <form action="javascript:get(document.getElementById('acctform'));" name="acctform" id="acctform">
  18. <p>
  19. <textarea rows="1" cols="1" style="width: 50%; height: 140px" id="accounts"></textarea>
  20. <br />username : password</p><p>
  21. <input type="submit" name="button" value="Sprawdz" onclick="return Tab_Click(this)">
  22. </form>
  23. </p>
  24. <div align=\"center\">
  25. <div id="waiting"></div>
  26. <p>
  27. <div id="showresults"></div>
  28. </div>
  29. </html>


ajax.js
  1. var http_request = false;
  2. function makePOSTRequest(url, parameters) {
  3. http_request = false;
  4. if (window.XMLHttpRequest) {
  5. http_request = new XMLHttpRequest();
  6. if (http_request.overrideMimeType) {
  7. http_request.overrideMimeType('text/html');
  8. }
  9. } else if (window.ActiveXObject) {
  10. try {
  11. http_request = new ActiveXObject("Msxml2.XMLHTTP");
  12. } catch (e) {
  13. try {
  14. http_request = new ActiveXObject("Microsoft.XMLHTTP");
  15. } catch (e) {}
  16. }
  17. }
  18. if (!http_request) {
  19. alert('Cannot create XMLHTTP instance');
  20. return false;
  21. }
  22.  
  23. http_request.onreadystatechange = alertContents;
  24. http_request.open('POST', url, true);
  25. http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  26. http_request.setRequestHeader("Content-length", parameters.length);
  27. http_request.setRequestHeader("Connection", "close");
  28. http_request.send(parameters);
  29. }
  30.  
  31. function alertContents() {
  32. if (http_request.readyState == 4) {
  33. if (http_request.status == 200) {
  34. result = http_request.responseText;
  35. document.getElementById('waiting').innerHTML = '';
  36. document.getElementById('showresults').innerHTML = result;
  37. } else {
  38. alert('There was a problem with the request.');
  39. }
  40. }else{
  41. document.getElementById('waiting').innerHTML = '<img src="loading.gif">';}
  42. }
  43.  
  44. function get(obj) {
  45. var poststr = "accounts=" + encodeURI( document.getElementById("accounts").value );
  46. makePOSTRequest('skrypt.php', poststr);
  47. }


skrypt.php
  1. <?php
  2. if (isset ($_POST['accounts'])) {
  3.             set_time_limit(0);
  4.             $dtaaccounts = nl2br($dtaaccounts);
  5.             $dtaaccounts = explode(&#092;"\n\", $_POST['accounts']);
  6.             //Header
  7.             echo &#092;"\".
  8.         &#092;"\";
  9.  
  10. [i]dalej reszta kodu[/i], [i]ale on już potrzebny nie będzie[/i]
  11. ?>


Pozdrawiam i z góry dzięki
magnus
Żeby uzyskać pomoc, to przydałoby się jakoś konkretnie sformułować problem smile.gif

Jeśli problemem jest to:
Cytat(miki3475 @ 7.05.2009, 22:09:04 ) *
zmienić z Ajax'a na PHP funkcje POST

to rozwiązanie jest proste:
- wyrzucasz niepotrzebny kod JS,
- dajesz <form action="skrypt.php">
i już masz zmienionego AJAX-a na zwykły POST smile.gif
miki3475
Myślisz, że tak nie próbowałem?

Poniżej zamieszczam całą paczkę (5kb)
http://rapidshare.com/files/183493340/chk.rar

Gdy robię tak jak wyżej opisałeś wyskakuje mi biała strona i tyle, a chciałbym aby pokazało się textarea, a poniżej wyniki z POST
Bart77
A dodałeś w <form> "method=POST" ?
miki3475
Oczywiście, że dodałem method=post.

index.php - przerobiony
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  4. <title>Checker</title>
  5. <style type="text/css">
  6. <!--
  7. body {
  8. background-color: #000000;
  9. }
  10. body,td,th {
  11. color: #FFFFFF;
  12. }
  13. -->
  14. </head>
  15.  
  16. <div align="center"><h2>Skrypt</h2>
  17. <form method=POST ACTION="skrypt.php">
  18. <p>
  19. <textarea rows="1" cols="1" style="width: 50%; height: 140px" id="accounts"></textarea>
  20. <br />username : password</p><p>
  21. <input type="submit" name="button" value="Check">
  22. </form> </p>
  23. <div align=\"center\">
  24. <div id="waiting"></div>
  25. <p>
  26. <div id="showresults"></div>
  27. </div>

skrypt.php
  1. <?php
  2.  
  3. if (isset ($_POST['accounts'])) {
  4.           set_time_limit(0);
  5.           $dtaaccounts = nl2br($dtaaccounts);
  6.           $dtaaccounts = explode("\n", $_POST['accounts']);
  7.           //Header
  8.           echo "<table font-size=1 width=\"90%\" border=1 cellspacing=\"0\" cellpadding=\"5\">".
  9.     "<tr><th>Username</th><th>Password</th><th>Email</th><th>Points</th><th>TrafficShare</th><th>Traffic left</th><th>Traffic (+)</th><th>Used storage</th><th>Validity</th><th>Security Lock</th></tr>";
  10.  
  11. function Get_traffic($content,$start,$end){
  12.                $r = explode($start, $content);
  13.                if (isset($r[1])){
  14.                $r = explode($end, $r[1]);
  15.                return $r[0];
  16.                }
  17.                 return;
  18.                }
  19.  
  20. foreach ($dtaaccounts as &$value) {
  21.                list($User, $Pass) = split(":", $value);
  22.          if (empty($User)==FALSE || empty($Pass)==FALSE){
  23.          $ch = curl_init();
  24.          curl_setopt($ch, CURLOPT_URL, "https://ssl.rapidshare.com/cgi-bin/premiumzone.cgi");
  25.          curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
  26.          curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  27.          curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  28.  
  29.          //set proxy here
  30.    //curl_setopt($ch, CURLOPT_PROXY, 'http://127.0.0.1:8080');
  31.    //curl_setopt($ch, CURLOPT_PROXYPORT, 8080);
  32.                //curl_setopt ($ch, CURLOPT_PROXYUSERPWD, '');
  33.  
  34.    curl_setopt($ch, CURLOPT_POST, 1);
  35.    curl_setopt($ch, CURLOPT_POSTFIELDS, "login=".$User."&password=".$Pass);
  36.    $pagedata = curl_exec($ch);
  37.    curl_close($ch);
  38.  
  39.    //get rapidshare details
  40.    ereg("Math.ceil(([0-9]+)/", $pagedata, $traffic);
  41.    $download[1] = $traffic[1] ;
  42.                $trafficshare[1] = $traffic[1] ;
  43.                ereg("<td>TrafficShare balance:</td><td align=right style=\"padding-right:20px;\"><b>([0-9.]+) GB</b>", $pagedata, $traffic);
  44.                ereg("<td>TrafficShare left:</td><td align=right style=\"padding-right:20px;\"><b>([0-9.]+) GB</b>", $pagedata, $traffic);
  45.    ereg("<td>RapidPoints:</td><td align=right style=\"padding-right:20px;\"><b>([0-9.]+)</b>", $pagedata, $points);
  46.    ereg("<td>Expiration date:</td><td style=\"padding-right:20px;\"><b>([a-zA-Z_0-9 .,]+)</b>", $pagedata, $valid);
  47.    ereg("schlosszu = \"([0-9])\"", $pagedata, $slock);
  48.    $pattern = "var email = \"([a-zA-Z0-9._-]+@[a-zA-Z0-9-]+.[a-zA-Z.]{2,5})\"";
  49.    ereg($pattern,$pagedata, $email);
  50.    if($slock[1]=="1"){
  51.    $slocktext = "active";
  52.    }else{
  53.    $slocktext = "inactive";
  54.    };
  55.                $stor=Get_traffic($pagedata,"<td>Used storage:</td><td align=right><b><script>document.write(setzeTT(\"","\"))</script>");
  56.                $tr2=Get_traffic($pagedata,"credited to the download quota.')\" style=\"cursor:help\">","</a>)</b></td>");
  57.    //display if valid
  58.    if(empty($valid[1])==FALSE){
  59.    echo "<tr>"."<td>$User</td>"."<td>$Pass</td>"."<td>$email[1]</td>"."<td>$points[1]</td>"."<td>$traffic[1] GB</td>"."<td>$download[1] MB</td>"."<td>$tr2</td>"."<td>$stor MB</td>"."<td>$valid[1]</td>"."<td>$slocktext</td>"."</tr>";
  60.    $validrs[] = $User . ":" . $Pass . ":" . $email[1] . ":" . $points[1] . ":" . $traffic[1] . ":".$download[1].":" . $tr2 . ":" . $stor . ":" . $valid[1] . ":" . $slocktext;
  61.    }
  62.    unset($valid);}}
  63. }
  64. ?>
Bart77
I biały ekran nadal?

P.S. W textarea dodaj jeszcze name="accounts".
miki3475
O dzięki, dodanie name="accounts" pomogło winksmiley.jpg

A czy jest możliwość zrobienia, aby nie przenosiło tak jakby tylko wyświetlało się pod okienkiem, mam na myśli, żeby okienko do wpisywania zostało ;p



Tak to w praktyce wygląda
http://niemaname.nazwa.pl/miki3476/
magnus
No to albo właśnie AJAX-em, albo ten kod ze skrypt.php musisz wrzucić do index.php, ustawić action="index.php" i sprawdzać, czy był wywołany z formularza (wtedy wykonać polecenia wstawione ze skrypt.php i wyświetlić pod formularzem) czy nie.
To ajaxem powinno pójść bez problemu, nawet jeśli zostawisz form action="skrypt.php", tylko wtedy dajesz button zamiast submit i na nim akcję wysyłania.
miki3475
Dobra poradziłem sobie z dodaniem kodu php z pliku skrypt.php na końcu pliku i wszystko hula. Teraz inny problem.

Chodzi o to, że podczas wpisywania danych przeze mnie chciałem aby konta były zapisywane na serwerze, ponieważ mam dużą ilość takich kont i często robię formata kompa. Przez co nie chciałbym sytuacji w której straciłbym jakieś konto. Dlatego chciałem dodać takie coś:
  1. <?php
  2.  
  3. if (empty ($_POST))
  4. {
  5.  
  6. ?>
  7.  
  8. <form action="" method="post">
  9.    <textarea name="Content"></textarea>
  10.    <input type="submit" value="OK" />
  11. </form>
  12.  
  13. <?php
  14.  
  15. }
  16. else
  17. {
  18.    file_put_contents ('plik.txt', file_get_contents ('plik.txt')  . "r\n" . $_POST['Content']);
  19. }
  20.  
  21. ?>


Niestety, teraz nie chce mi to działać.



Cały skrypt:
http://paste2.org/p/202414
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.