login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[Extren url] niet door linken

Offline giellexe - 18/05/2014 08:51 (laatste wijziging 18/05/2014 08:54)
Avatar van giellexeMySQL interesse Hallo allemaal,

Ik ben bezig met een eigen project voor mijn homewizard (Draadloos schakelen)
Maar nu loop ik een beetje vast.
Ik wil wanneer ik op een link klik dat hij die niet door link maar gewoon op de site blijft!

Voorbeeld:

<a href=http://IP/WW/sw/22/on>Aan</a>
terwijl ik op
http://www.mijndomeinnaam.nl/homewizard.php
de gegevens laat

  1. <?php
  2.  
  3. $hoofd_link = "http://MIJNIP/WW/";
  4. $jsonurl = "http://MIJNIP/WW/get-sensors";
  5. $json = file_get_contents($jsonurl);
  6. $data = json_decode($json,true);
  7.  
  8.  
  9. echo "<table><tr><td>Id</td><td>Naam</td><td>Fav</td><td>Status</td></tr>";
  10.  
  11. $switches = $data['response']['switches'];
  12. echo "<tr><th>Schakelaars</th></tr>";
  13. foreach($switches as $switch){
  14. if($switch['status'] == 'on' && $switch['type'] == 'switch')
  15. {
  16. $link1 = "<a href=".$hoofd_link."sw/".$switch['id']."/off>UIT</a>";
  17. }
  18. elseif($switch['status'] == 'off' && $switch['type'] == 'switch')
  19. {
  20. $link1 = "<a href=".$hoofd_link."sw/".$switch['id']."/on>AAN</a>";
  21. }
  22. else
  23. {
  24. $link1 = 'ERROR';
  25. }
  26. print '<tr>';
  27. print '<td>'.$switch['id'].'</td>';
  28. print '<td>'.$switch['name'].'</td>';
  29. print '<td>'.$switch['status'].'</td>';
  30. print '<td>'.$switch['type'].'</td>';
  31. print '<td>'.$switch['dimlevel'].'</td>';
  32. print '<td>'.$link1.'</td>';
  33. print '</tr>';
  34. }
  35.  
  36. $scenes = $data['response']['scenes'];
  37. echo "<tr><th>Scenes</th></tr>";
  38. foreach($scenes as $scene){
  39. print '<tr>';
  40. print '<td>'.$scene['id'].'</td>';
  41. print '<td>'.$scene['name'].'</td>';
  42. print '<td>'.$scene['favorite'].'</td>';
  43. print '</tr>';
  44. }
  45.  
  46. $thermometers = $data['response']['thermometers'];
  47. echo "<tr><th>Thermometers</th></tr>";
  48. foreach($thermometers as $thermometer){
  49. print '<tr>';
  50. print '<td>'.$thermometer['id'].'</td>';
  51. print '<td>'.$thermometer['name'].'</td>';
  52. print '<td>'.$thermometer['favorite'].'</td>';
  53. print '<td>'.$thermometer['te'].'</td>';
  54. print '<td>'.$thermometer['hu'].'</td>';
  55. print '<td>'.$thermometer['channel'].'</td>';
  56. print '<td>'.$thermometer['te+'].'</td>';
  57. print '<td>'.$thermometer['te+t'].'</td>';
  58. print '<td>'.$thermometer['hu+'].'</td>';
  59. print '<td>'.$thermometer['hu+t'].'</td>';
  60. print '<td>'.$thermometer['te-'].'</td>';
  61. print '<td>'.$thermometer['te-t'].'</td>';
  62. print '<td>'.$thermometer['hu-'].'</td>';
  63. print '<td>'.$thermometer['hu-t'].'</td>';
  64. print '</tr>';
  65. }
  66.  
  67. $sensors = $data['response']['kakusensors'];
  68. echo "<tr><th>Sensors</th></tr>";
  69. foreach($sensors as $sensor){
  70. print '<tr>';
  71. print '<td>'.$sensor['id'].'</td>';
  72. print '<td>'.$sensor['name'].'</td>';
  73. print '<td>'.$sensor['status'].'</td>';
  74. print '<td>'.$sensor['type'].'</td>';
  75. print '<td>'.$sensor['timestamp'].'</td>';
  76. print '</tr>';
  77. }
  78. echo "</table>";
  79. ?>


Hoe kan ik de link wel door geven zonder dat hij naar de pagina laat zeg maar.

Bedankt alvast![code=php]

5 antwoorden

Gesponsorde links
Offline Thomas - 18/05/2014 11:57 (laatste wijziging 18/05/2014 12:02)
Avatar van Thomas Moderator Is MIJNIP een IP uit een range van niet-geroute IP-adressen (192.168.x.x, 10.x.x.x, mogelijk nog anderen)?

Het Internet kent waarschijnlijk jouw (lokale) IP niet. Als je dus op Internet zoekt naar een lokaal IP, gaat de webserver aldaar op zijn lokale netwerk zoeken.

Heb je al gecontroleerd of het een niet-geroute IP betreft en/of JSON uberhaupt data teruggeeft?

Het betreft de ranges:
10.0.0.0 t/m 10.255.255.255
172.16.0.0 t/m 172.31.255.255
192.168.0.0 t/m 192.168.255.255

Zie de WIKI
Offline giellexe - 18/05/2014 12:20
Avatar van giellexe MySQL interesse het werkt allemaal de link klik enzovoorts.

Maar ik wil graag een soort jquery link erin hebben.
Wanneer ik op de link klik dat het in achtergrond zijn proces doet.
Wanneer dit gelukt is de status verandert.
Maar dit is me nog nooit gelukt.

Offline Thomas - 18/05/2014 13:53
Avatar van Thomas Moderator Uhm, je zou AJAX-requests kunnen doen via JavaScript, dan hoef je de pagina niet te verlaten. Je zou zelfs JavaScript kunnen gebruiken om de informatie op de pagina te verversen, je hoeft deze dan niet meer te herladen om status-updates te zien.

jQuery biedt mogelijk opties voor wat je probeert te bereiken. Deze site heeft ongetwijfeld wel enige tutorials en scripts hierover.
Offline giellexe - 18/05/2014 14:47
Avatar van giellexe MySQL interesse Ik heb wat geprobeerd maar hoe jquery of javascript in elkaar zit in nog bij mij 0,0% duidelijk.
Kan iemand mij verder helpen ?
Alvast bedankt!
Offline Thomas - 19/05/2014 12:21 (laatste wijziging 19/05/2014 12:24)
Avatar van Thomas Moderator Okay, laat ik in eigen woorden zetten wat ik begrijp:

Je hebt op je eigen (lokale?) netwerk een voorziening die je in staat stelt om, door middel van het aanroepen van specifieke URL's, onder andere data van sensoren uit te lezen en actoren (? dat was de term volgens mij, oftewel (licht)schakelaars) te bedienen. Het formaat waarin je sensor-informatie ontvangt is JSON.

Op een website (ook op hetzelfde lokale netwerk? of op internet?) heb je een overzichtspagina gemaakt waarop sensor-informatie wordt getoond en je door middel van hyperlinks de actoren kunt bedienen.

Je wilt het volgende bereiken: na het klikken op een actor-link wil je op de status-pagina blijven. Waarschijnlijk wil je daarbij ook een status-update hebben (deze geeft aan of het veranderen van een status is geslaagd, mogelijk krijg je hier ook JSON-informatie van terug als je een switch-on of switch-off URL aanroept?).

Je vraag is: hoe krijg ik dit voor elkaar.

Klopt dit een beetje? Het was voor mij nogal moeilijk om van je verhaal in eerste instantie een lopend verhaal te maken. Dan zijn de volgende zaken onduidelijk:

netwerk
Hoe is een en ander gesitueerd? Bevinden het "aanspreekpunt van de homewizard" en de webserver met het bovenstaande PHP-script zich op hetzelfde netwerk? Of bevindt het aanspreekpunt zich op een lokaal netwerk, en de webserver zich op het internet? Zoja, hoe verloopt de communicatie tussen die twee? Want normaal gesproken verloopt er geen (echte) communicatie tussen die twee? Tenzij je allerhande port-mappings hebt in je router of wat dan ook?

security
Ook vermoed ik dat er niet zoveel / geen beveiliging is aangebracht in je script, maar als je aanspreekpunt zich op een lokaal netwerk bevindt, kunnen wij daar normaliter niet bij vanaf internet. Tenzij je dus op een of andere manier toegang tot je lokale netwerk toestaat? Ik zou in ieder geval een beveiliging inbouwen in je script, dit hoeft helemaal niet moeilijk te zijn.

EDIT: over security gesproken, hanteerde jQuery niet de "same origin" policy, mogelijk kun je helemaal niet cross-server jQuery vraagstukken stellen (in ieder geval niet zonder speciale voorzieningen?)? Hmm...

interface van de homewizard
Je roept een URL aan en je krijgt JSON terug, je roept andere URL's aan en er gebeuren dingen. Ik kan wel een en ander afleiden uit je codefragment, maar hoe je omspringt (om zou moeten springen) met je homewizard weet ik verder niet, ik ken de URL's en commando's verder niet. Dat beperkt mij een beetje in het formuleren van een oplossing...

---

Is het bovenstaande script volledig, ik bedoel, bouw je hier een complete webpagina mee op? Dit is niet echt een valide HTML-document. Als je een JavaScript / jQuery / AJAX applicatie wilt gaan bouwen dan zou ik toch echt overwegen om een en ander op een nette - en eigenlijk de enige goede - manier aan te pakken: maak hier om te beginnen eens een fatsoenlijk - en compleet - HTML document van. Zet vervolgens wat eerste stappen in jQuery en probeer het een en ander uit. Als JavaScript nog geheimen voor je bevat dan heb je volgens mij wat "hoofdstukken overgeslagen" als je al in PHP bezig bent.

Mijn voorstel: begin bij het begin. Als je een aantal dingen hebt geprobeerd en vastloopt kun je daar hier vragen over stellen. Ik denk dat jQuery mogelijkheden kan bieden voor hetgeen je probeert te bereiken, maar ik voel er weinig voor om het voor je (uit) te schrijven. Daar is de rubriek samenwerken voor.
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.177s