ugrás a tartalomhoz

open.wml

szocmunka · 2007. Aug. 4. (Szo), 15.06
Szevasztok!

Van egy HTML –be ágyazott JS script, ami tökéletesen elvégzi feladatát, (Nézd itt: http://szocialismunka.extra.hu/proba.html ) de WAP-on nem működik.

Egy text mezőbe, melybe ha beírok egy szót, Pl.: „minta” akkor megnyitja a minta.html –t, ha nincs ilyen file, akkor hibaüzenet érkezik.

Meg lehet ezt csinálni csupán WML –t használva, vagy WMLS-t is használni kell hozzá?

Köszi: K. I.
 
1

biztos kell ez?

numen · 2007. Aug. 4. (Szo), 16.25
hányan használnak még wml-t? nekem 3-4 éves mobilom van, de html oldalakat már renderel.
szerintem szűrd ki a nagyobb böngészőket, és a maradékot küldd egy primitívre megcsinált html oldalra (táblázatok pl. szerintem már ne legyenek benne, képekkel is csínján, css1-nél komolyabb dolgokat pedig ne tegyél bele)

ellenben ezt nem javascripttel oldanám meg - nem vagyok benne biztos, hogy van benne olyan függvény, ami megnézi, döglött-e egy link... php-ban viszont van ilyen...

valami ilyesmire gondoltam:
<form action="letezik.php" method="get">
<input type="form" name="pswrd"><input type="submit" value="OK">
</form>
és a letezik.php meg valami ilyesmi:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html><head><title>Teszt</title>
<?
if (file_exists($_GET['pswrd'] . ".html")) {
$file = $_GET['pswrd'] . ".html";
} else if (file_exists($_GET['pswrd'] . ".php")) {
$file = $_GET['pswrd'] . ".php";
}

echo '<meta http-equiv="Refresh" content="0; url="http://szocialismunka.extra.hu/' . $_GET['pswrd'] . '.html"/></head><body>Redirecting...</body></html>';
} else {
echo "</head><body>HIBAÜZENET & ugyanaz a form újból...</body></html>"
}
?>
ez inkább csak vázlat, tele hibával (pl. a form ha jelszót kell majd beleírni, akkor a method="post" és akkor a PHP-kódban is a $_GET[ -eket le kell cserélni $_POST[ -ra meg ilyesmik...), ez inkább csak amolyan ránézésre-megoldás.

szerveroldalon oldanám meg - akkor nem számít, hoyg a mobilokba milyen javascriptmotort raktak, ha raktak.
2

Mellesleg...

Ronyn · 2007. Aug. 6. (H), 15.33

<?php

if(isset($_GET["oldalnev"])){ 
if(file_exists($_GET["oldalnev"].".html")) {   
$file=$_GET["oldalnev"].".html";}  
elseif(file_exists($_GET["oldalnev"].".php")) {   
$file = $_GET["oldalnev"].".php";}
else{$file=$_SERVER["PHP_SELF"];
$hiba="Hibaleiras";}}
  
print"<?xml version=\"1.0\" encoding=\"ISO-8859-2\"?> 
<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\" \"http://www.wapforum.org/DTD/wml_1.1.xml\">
<wml> 
<card title=\"Minta\" newcontext=\"true\">";  
if((isset ($file))&&(!empty($file))){
print"<onevent type=\"ontimer\"> 
<go href=\"".$file."\"/></onevent> 
<timer value=\"0\"/>";}  
print"<p>".$hiba."<br/><input type=\"text\" name=\"oldalnev\"/> 
<anchor>Mehet<go href=\"$_SERVER[PHP_SELF]\"> 
<postfield name=\"oldalnev\" value=\"$(oldalnev)\"/> 
</go></anchor></p></card></wml>"; 

?>
3

open.wmls

szocmunka · 2007. Aug. 15. (Sze), 14.56
Szevasztok!

Ronyn megoldását próbáltam ki. Az általa készített PHP kódot változtatás nélkül betettem egy proba.php file –ba, és készítettem egy minta.html filet is, majd mindkettőt feltöltöttem a szerverre. Meghívtam az proba.php file-t WinWap böngészővel. A kereső mező rendben megjelent a képernyőn, beírtam hogy „minta” és leokéztam. Azonban a minta.html megnyitása helyett a következő hibaüzenetet írta ki a WinWap: Not WML content.

Kérdésem: Mit hibáztam el? Valamit személyre kellett volna szabnom a kódban?

Az eredeti problémámra nekem is van egy öszvér elképzelésem. Találtam egy WML és WMLS nyelven készített jelszókezelő szkriptet. Melyet átalakítottam az alábbi módon:

index.wml

  <?xml version="1.0"?> 
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
  <card id="c1" title="open">
		<p>Nem irtal be semmit!:<br/>
			<input name="pw" type="text"/>
			<a href="open.wmls#login('$(pw)')">OK</a>
		</p>
  </card>
 </wml> 
open.wmls

 extern function login(pw) {
	if(pw=="minta") WMLBrowser.go("minta.wml");
            if(pw=="minta2") WMLBrowser.go("minta2.wml");
            if(pw=="minta3") WMLBrowser.go("minta3.wml");
            if(pw=="minta4") WMLBrowser.go("minta4.wml");
	else Dialogs.alert("Hiba!");  
Ezzel az a probléma, hogy egyedül a minta4.wml filet nyitja meg úgy, hogy nem ugrik fel a Hiba! üzenet. Ebben az esetben ha nyomok egy ok –t akkor rendben megnyitja a kívánt filet-t.

Ha viszont az alábbi sort:

else Dialogs.alert("Hiba!");

kiveszem a kódból akkor nem ugrik fel hibaüzenet egyik file megnyitásánál sem, viszont akkor sem jelez, ha olyan file –ra keresek amely nincs a szerveren.
Egy további probléma, hogy tudtommal a WML és a WMLS nem szerver oldalon fut, így ha mindkét fileomat letölti a felhasználó telefonja, az 100000 darab minta.wml esetén, akár kezelhetlen méretű open.wmls file-t eredményezne.

Hogy lehet megoldani, hogy ne kelljen 100000 soros open.wmls készíteni, illetve, hogy a hibaüzenet is megfelelően működjön?

Köszi: K.I.
4

Re...

Ronyn · 2007. Aug. 16. (Cs), 03.02
Ha telefonra tervezel,akkor ne a winwappal teszteld...
Ez telefonra lett irva,és telefonon kell neki müködnie,bár az opera szerintem hibátlanul lekezeli,de például az FF wml bővítménye sem ismeri az "onevent" taget,és lehet hogy a hire ellenére a winwap sem...
(esetleg,ha adnál egy cimet ahol megcsináltad/próbáltad amit irtam akkor többet tudnék mondani)
Hogy lehet megoldani, hogy ne kelljen 100000 soros open.wmls készíteni, illetve, hogy a hibaüzenet is megfelelően működjön?

Több lehetőség van,az egyik legegyszerübb,az amit én is irtam,vagyis wml-php keveréke,mivel a php szerveroldalon fut,a kliensoldalon csak az adatbevitelt kell megoldani...


PS.:
Ki is próbáltam Operán,igaz tettem egy fejlécet is hozzá,de tökéletesen müködik,telefonon is müködni fog...

Itt a modosított kod...

<?php  
$hiba="";
if(isset($_GET["oldalnev"])){   
if(file_exists($_GET["oldalnev"].".html")) {     
$file=$_GET["oldalnev"].".html";}    
elseif(file_exists($_GET["oldalnev"].".php")) {     
$file = $_GET["oldalnev"].".php";}  
else{$hiba="Nincs ilyen oldal!!";}}  
    
	
	header("Content-type:text/vnd.wap.wml;charset=ISO-8859-2");
	header("Cache-control:no-cache,no-store,must-revalidate");
	header("Pragma:no-cache");
	
print"<?xml version=\"1.0\" encoding=\"ISO-8859-2\"?>  
<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\" \"http://www.wapforum.org/DTD/wml_1.1.xml\"> 
<wml>  
<card title=\"Minta\" newcontext=\"true\">";    
if((isset ($file))&&(!empty($file))&&(empty($hiba))){  
print"<onevent type=\"ontimer\">  
<go href=\"".$file."\"/></onevent>  
<timer value=\"0\"/>";}    
print"<p>".$hiba."<br/><input type=\"text\" name=\"oldalnev\"/>  
<anchor>Mehet<go href=\"$_SERVER[PHP_SELF]\">  
<postfield name=\"oldalnev\" value=\"$(oldalnev)\"/>  
</go></anchor></p></card></wml>";   
  
?>
Értelemszerüen az "emptyempty" helyett csak "empty" kell,nem tudom miért duplázza meg a böngésző(nekem duplán látszik)...?
5

teszt.php

szocmunka · 2007. Aug. 19. (V), 21.58
Szevasztok!

Köszönöm a kódot Ronyn. Kivettem a felesleges Emptyket és készítettem belőle egy teszt.php file-t, illetve egy proba.html-t. Itt próbálható ki: http://csigabiga.hu/teszt.php Operában a megoldás tökéletes dolgozik. Azonban WinWap –ban (Ezt a verziót használtam: http://pcforum.hu/letoltes/?dlid=1025&op=download ) és a telefonomon sem akar működni.
Ha beírom a text mezőbe, hogy proba és nyomok egy mehet-et az teszt.php oldal töltődik be ismét, mintha csupán frissített volna. Ha viszont olyan szót írok be, amilyen néven nincs file mentve a szerverre, akkor rendben megérkezik a válasz, hogy Nincs ilyen oldal!!

(???)

Köszi: K.I.
6

timer

Ronyn · 2007. Aug. 20. (H), 16.17
esetleg probáltad már a timer value értékét egyre változtatni?
Ha nem akkor hajrá..
Én minden dolgot két felulettel irok(wml/html),és elég sokszor alkalmaztam már ilyet,nekem mukodik mindennel...
Ez ugyanolyan átirányitás mint a html-ben a refresh,és szabad vele kisérletezni is hogy miért is nem megy neked...
Másrészt elég sürűn benézek ide,igy igazán felesleges minden alkalommal kulön emailt küldeni...
7

Próbáltam...

szocmunka · 2007. Aug. 26. (V), 22.20
Szevasztok!

Próbálkoztam, de nem sikerült wapos mobilon működésre bírnom a kódot.
Visszatértem a szimplán wml megoldáshoz. Rájöttem közben, hogy a fentebbi wml+wmls scriptben, ha minden „if” elé egy „else” teszek akkor hibátlanul dolgozik. Csak hát az a fránya wmls file méret ugye….
Ezért gondoltam arra, hogy wmls nélkül próbálom megoldani a dolgot:

Szóval a WAP –os oldalam fő könyvtárában található WML fileokat szeretném megnyitni úgy, hogy csak a file nevét keljen megadni az input mezőbe. Tehát ne kellejen a kiterjesztést is hozzáírni minden egyes megnyitáskor. Elég legyen azt írni, hogy „valami” és ne kelljen úgy beírni, hogy „valami.wml”.

<wml>
<card title="Megnyit">
<p>Add meg a file nevet:<br/>
<input name="URL" value=""/>
<a href="$(URL)">OK</a>
</p>
</card>
</wml>

Talán ilyesmi lesz a megoldás?: <a href="$(URL).wml">OK</a>

Köszi: K. I.
8

Mea culpa

szocmunka · 2007. Aug. 28. (K), 21.33
Szevasz Ronyn!

A script tényleg kifogástalnul működik!!!!! winwapban és mobilon egyaránt. Én voltam a balga... Köszönöm mégegyszer, és elnézést, hogy az idegeidre mentem egy kicsit...

Köszönettel: Kürthy István