Go Down

Topic: %2520 spazio inece che %20 (Read 1 time) previous topic - next topic

SukkoPera

No, quello è il server che ti risponde e deve per forza trasformare le & in &, perché non si può scrivere & da solo in HTML. Sei sicuro che il problema non sia nella prima parte dell'URL? Quando lo apri nel browser ti ridireziona da qualche parte?
"Code is read much more often than it is written, so plan accordingly. Design for readability."

Guida rapida a ESP8266: https://goo.gl/kzh62E

zoomx

ciao allora
1)se non la uso, e metto %20 (al posto dello spazio) l url generato è....%2520... e in print la pagina ovviamente non viene trovata
2) se non la uso e metto spazio la url viene troncata prima dello spazio
3)se la uso metto spazio la url viene troncata prima dello spazio

HELPPP
%25 è la codifica del % in esadecimale. Mi sa che c'è un urlencode nascosto.
Quindi io proverei senza urlencode e con lo spazio al posto del %20. Solo che verrebbe troncata prima dello spazio. E allora prova on i caratteri d'escape dovrebbe essere "\ ", senza le virgolette.

SukkoPera

È quello che abbiamo già fatto :).
"Code is read much more often than it is written, so plan accordingly. Design for readability."

Guida rapida a ESP8266: https://goo.gl/kzh62E

tarata

Allora...la cosa sembra piu difficile di quanto pensavo:


digitando la stringa url
Code: [Select]
http://www.dominio.it/track/requests.php?a=upload&u=test2&p=pwd&lat=000&long=000&do=2016%252D10%252D16+18%253A00%253A00&tn=nodemcu&db=8&ang=0.0&sp=0.0&alt=10.0

la pagina php che si occupa di gestire l' url mi da: Result:5

Qui posto il codice della pagina requests.php che da quest' errore :
Code: [Select]
<?php

    define
("R_OK"0);

    require_once(
"database.php");


    function 
run($connection)
    {
  
$requireddb urldecode($_GET["db"]);     
  if ( 
$requireddb == "" || $requireddb )
  {
            return 
"Result:5";
  }



        
$db connect_save($connection);
        if (
is_null($db))
{
            return 
"Result:4";
}

// Check username and password
        
$username $_GET["u"];
        
$password $_GET["p"];

// User not specified
if ( $username == "" || $password == "" )
{
            return 
"Result:3";
}

        
$userid $db->valid_login($username$password);
        switch (
$userid) {
        case 
NO_USER:
            
$userid $db->create_login($username$password);
            if (
$userid 0)
                return 
result(2);
            break;
        case 
INVALID_CREDENTIALS:
            return 
result(1);  // user exists, password incorrect.
        
case LOCKED_USER:
            return 
"User disabled. Please contact system administrator";
        }


$tripname urldecode($_GET["tn"]);
$action $_GET["a"];




if ($action=="noop")
{
            return 
"Result:0";
}

SukkoPera

#19
Oct 22, 2016, 11:52 am Last Edit: Oct 22, 2016, 11:52 am by SukkoPera
Ma nell'url non devi mettere &amp!

Ascolta, forse è meglio che investi un attimo a capire quali caratteri si possono usare negli URL e nell'html e quali metodi si usano per ovviare alle limitazioni nei due casi. Andando a caso non arriverai da nessuna parte.
"Code is read much more often than it is written, so plan accordingly. Design for readability."

Guida rapida a ESP8266: https://goo.gl/kzh62E

tarata

Ciao rieccomi dopo qualche notte insonne:
allora

1)url che avevo indicato prima
Code: [Select]
http://www.dominio.it/track/requests.php?a=upload&amp;u=test2&amp;p=pwd&amp;lat=000&amp;long=000&amp;do=2016%252D10%252D16+18%253A00%253A00&amp;tn=nodemcu&amp;db=8&amp;ang=0.0&amp;sp=0.0&amp;alt=10.0
è quella che genera il server in risposta al nodemcu e incollandola nel browser praticamente mi da errore Result 5, per un carattere non ammesso che ho scoperto essere ";".
Infatti se al posto di "&amp;" metto "&amp&" url passa i valori alla pagina php e tutto funziona.

2) ho creato una pagina test.htm sul server e ho richiamato tale pagina nello sketch:
Code: [Select]
String url =  "/track/test.html"; e sebbene nel browser la pagina sia raggiungibile la seriale mi dice
Code: [Select]
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://www.dominio.it/track/test.html">here</a>.</p>
</body></html>

closing connection


sembra che il node non riesce comunque a raggiungere nessuna pagina....

tarata

Solito copia&incolla senza avere idea di quel che stai facendo, vero? Prova questo:

Code: [Select]
String url = "/track/requests.php?a=upload&u=test2&p=pwd&lat=000&long=000&do=2016-10-16 18:00:00&tn=nodemcu&db=8&ang=0.0&sp=0.0&alt=10.0";

 // This will send the request to the server
 client.print(String("GET ") + urlencode(url) + " HTTP/1.1\r\n" +
              "Host: " + host + "\r\n" +
              "Connection: close\r\n\r\n");


ho risolto modificando il codice cosi...
Code: [Select]
client.print(String("GET " + url + " HTTP/1.1\r\n") +
               "Host: " + host + "\r\n" +
               "Connection: close\r\n\r\n");

SukkoPera

Non mi torna, ma meglio così!
"Code is read much more often than it is written, so plan accordingly. Design for readability."

Guida rapida a ESP8266: https://goo.gl/kzh62E

Go Up