Minulla on java ohjelma joka vaatii tunnistautumisen (authentication)
Authuser ja authpass sijoitetaan .ini fileen, josta ohjelma käynnistyessään lukee ne.
Mutta jos auth tai pass sisältää välilyöntejä tulee tämmöinen:
java.io.IOException: Server returned HTTP response code: 400 for URL: http://www .sivunurl.com/auth.php?auth=nakke nakuttaja&password=jotain
Yritin tätä:
if(authorization.equals(" ")) { System.out.println("- Cannot use spaces in auth!"); System.exit(0); }
Millä sen voisi korjata?
ja tuo auth.php filu on:
<?php validateAuth(); exit(); function validateAuth() { $Registered = array(array("auth" => "public", "pass" => "auth"), ); $outputString = ''; $auth = addslashes(htmlspecialchars(urldecode(strtolower($_GET['auth'])))); $pass = sha1(addslashes(htmlspecialchars(urldecode(strtolower($_GET['pass']))))); for($i = 0; $i < count($Registered); $i++) { if($Registered[$i]['auth'] == $auth && sha1($Registered[$i]['pass']) == $pass) { echo("Vald auth"); exit(); break; } } echo("Auth invalid"); exit(); } ?>
Jos tuon kenties voisi jotenkin korjata php filusta käsin?
Tiedän että se toimi näin: nakke%20nakuttaja mutta kaikki eivät tuota käytä, ja jos ei käytä tuota tyyliä niin ohjelma päästää läpi vaikka auth ja pass olisi väärin.
Luo tarvittavat tiedot tiedostosta ja korvaa kaikki muuttujissa olevat erikoismerkit vastaavalla url enconding numerokoodilla. Tämä on tosiaan ohjelmoijan tehtävä eikä sitä pidäkään olettaa käyttäjän tekevän. Tämä pitää tehdä lähettäjän päässä, php:llä se on jo liian myöhäistä.
En muista oliko javassa joku valmis funtio tuohon urlencodin korvaukseen, mutta helpostihan tuollaisen tekee itsekin. Korvattavia merkkejä on vain pari kymmentä.
http://www.blooberry.com/indexdot/html/topics/
Aihe on jo aika vanha, joten et voi enää vastata siihen.