php class aanroepen binnen een javascript functie

Status
Niet open voor verdere reacties.

poashoas

Gebruiker
Lid geworden
31 mei 2008
Berichten
66
Hallo lezers,

Ik heb een javascript functie die wordt geladen op de index pagina. Die kan je natuurlijk aller tijden oproepen maar het probleem is dat ik ook een $_SESSION['challenge'] nodig heb. Die vervalt na het uitloggen, dus die wordt niet opnieuw aangemaakt als ik opnieuw weer wil inloggen, tenzij ik de pagina refresh...
De pagina wil ik niet vernieuwen en het php gedeelte wordt dus niet opnieuw aangeroepen.

Hoe voeg ik regel 5 t/m 7 toe binnen een javascript functie (eventueel met AJAX?) Let op regel 23 waar de sessie wordt gebruikt. De sessie wordt nog eens gebruikt om het ontvangen wachtwoord+challenge te vergelijken met wachtwoord_database+challenge dus later heb ik die sessie weer nodig. Het moet dus echt met een php sessie...

  1. <?php
  2. Header("content-type: application/x-javascript");
  3. session_start();
  4. require_once('../../../application/model/login/login.class.php');
  5. $chlng=new login();
  6. $chlng->setChallengeVar();
  7. echo "function checkForm(){\n";
  8. echo " valid=true;\n";


  9. echo " var usrid=document.getElementById('userid');\n";
  10. echo " if(!usrid){\n";
  11. echo " return;\n";
  12. echo " }\n";
  13. echo " if(!usrid.value){\n";
  14. echo " showError(usrid,'Enter your ID');\n";
  15. echo" }\n";
  16. echo " var psw=document.getElementById('passwd');\n";
  17. echo " if(!psw){return;}\n";
  18. echo " if(!psw.value){showError(psw,'Enter your password');}\n";
  19. echo " var chlng=document.getElementById('chlng');\n";
  20. echo " if(!chlng){\n";
  21. echo " return;\n";
  22. echo " }\n";
  23. echo " chlng.value=MD5(MD5(psw.value)+'".$_SESSION['challenge']."');\n";
  24. echo " psw.value='';\n";
  25. echo " return valid;\n";
  26. echo " }\n";


  27. echo " function showError(obj,message){\n";
  28. echo " if(!obj.errorNode){\n";
  29. echo " obj.onchange=hideError;\n";
  30. echo " var p=document.createElement('p');\n";
  31. echo " p.appendChild(document.createTextNode(message));\n";
  32. echo " obj.parentNode.appendChild(p);\n";
  33. echo " obj.errorNode=p;\n";
  34. echo " }\n";
  35. echo " valid=false;\n";
  36. echo " return;\n";
  37. echo " }\n";

  38. echo "function hideError(){\n";
  39. echo " this.parentNode.removeChild(this.errorNode);\n";
  40. echo " this.errorNode=null;\n";
  41. echo " this.onchange=null;\n";
  42. echo "}\n";
  43. echo "function pageload(){\n";
  44. echo " var W3CDOM=document.getElementById&&document.getElementsByTagName&&document.createElement;\n";
  45. echo " // check if browser is W3CDOM compatible\n";
  46. echo " if(W3CDOM){\n";
  47. echo " document.getElementById('loginform').onsubmit=function(){\n";
  48. echo " return checkForm();\n";
  49. echo " }\n";
  50. echo " }else{alert('error');}\n";
  51. echo "}\n";
  52. ?>
 
De oplossing was het in een iframe plaatsten en bij het uitloggen vernieuwen met
(window.parent.)document.getElementById('mijniframe').contentDocument.location.reload(true);
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan