Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ajax]odświerzanie obrazka
Forum PHP.pl > Forum > XML, AJAX
Valker
Piszę w 2 postach, bo treść jest za długa według forum biggrin.gif

Tak więc szukałem tego wszędzie i nic nie znalazłem. Tak więc mam sobie pliczek token.php, który generuje mi obrazek z kodem.
Ten obrazek jest umieszczany w formularzu (przy pierwszym załadowaniu kodu). Ktoś się loguje, robi co swoje i chce się wylogować. Tak więc po wylogowaniu trzeba dać szanse zalogowania się ponownie. Dlatego umieszczam tam formularz. I tu jest problem. Kod na obrazku jest taki sam. (cały kod formularza jest ładowany ajaxem jeszcze raz). Próbowałem już chyba wszystkiego:
  1. <?php
  2. function logout()
  3. {
  4. oXml = zXmlHttp.createRequest();
  5. oXml.open('GET', 'file.php?file=acc_login.php&logout=1', true);
  6. oXml.onreadystatechange = function ()
  7. {
  8. if (oXml.readyState == 4 && oXml.status == 200)
  9. {
  10. document.getElementById('acc_menu_links').innerHTML = "";
  11. document.getElementById('acc_login').innerHTML = oXml.responseText;
  12.  
  13. document.getElementById('acc_login_load').innerHTML = "";  
  14. document.getElementById('acc_login_load').style.display = "none";
  15.  
  16. oXml.abort();
  17. oXml.open("get","file.php?file=news.php", true);
  18. oXml.onreadystatechange = function ()
  19. {
  20. if (oXml.readyState == 4 && oXml.status == 200)
  21. {
  22. document.getElementById('content').innerHTML = oXml.responseText;  
  23. }
  24. }
  25. oXml.send(null);
  26.  
  27. oXml.abort();
  28. oXml.open("get","token.php", true);
  29. oXml.onreadystatechange = function ()
  30. {
  31. if (oXml.readyState == 4 && oXml.status == 200)
  32. {
  33. //nie działa to:
  34. document.getElementById('Token_Img').src = token.php";  
  35. //ani to:
  36. document.getElementById('Token_Img').src = oXml.RespondeText";  
  37. }
  38. }
  39. oXml.send(null);  
  40. }
  41. }
  42. oXml.send(null);
  43. }
  44. ?>


token.php:
  1. <?php
  2. header("Content-type: image/gif");
  3. header('Cache-Control: no-store, no-cache, must-revalidate');
  4. header('Pragma: no-cache');
  5.  
  6. //***********************************************//
  7.  
  8. $sText=$_SESSION['token'];
  9.  
  10. (tu wpisywanie kodu itd)
  11.  
  12. imagejpeg($oImg,NULL,100);
  13. ?>


acc_login.php:
  1. <?
  2. require_once(CMS_DIR . 'CMS.php');
  3. require_once(SMARTY_DIR . 'CMS_Smarty.php');
  4.  
  5. try{
  6. $oCms = new CMS();
  7. $oConfig = new CMS_Config();
  8. $oLang  = new CMS_Language();
  9.  
  10. if(!get_class($this))
  11. $oSmarty = new CMS_Smarty($oConfig->DefultTemplate);
  12. else
  13. $oSmarty =& $this;
  14.  
  15. $blnLogout = $oCms->validFormValue($_GET['logout'],'integer',array(0,1));  
  16. if($blnLogout==1)
  17. {
  18. $_SESSION['access'] = -1;
  19. unset($_SESSION['AccountNumber']);
  20. unset($_SESSION['token']);
  21. $oCms->lossToken();
  22. }
  23.  
  24. $oLang->loadLanguageForFile('acc_login');
  25. print_r($_SESSION['token']);
  26. $arrLangTemp = array();
  27. $arrLangTemp['acc_num'] = $oLang->acc_num;
  28. $arrLangTemp['password'] = $oLang->password;
  29. $arrLangTemp['acc_lost'] = $oLang->acc_lost;
  30. $arrLangTemp['register'] = $oLang->register;
  31. $arrLangTemp['token'] = $oLang->token;
  32.  
  33. $oSmarty->assign('template', $oConfig->DefultTemplate);
  34. $oSmarty->assign('language', $oLang->getUserLanguage());
  35. $oSmarty->assign('lang',$arrLangTemp);
  36.  
  37. $oSmarty->assign('template', "defult");
  38. $oSmarty->assign('language', "polish");
  39. $oSmarty->assign('lang',$arrLangTemp);
  40.  
  41. $oSmarty->display('acc_login.tpl');
  42. }
  43. catch(E_CMS_FileLoad $e)
  44. {
  45.  echo "<pre>";
  46. print_r($e);
  47. echo "</pre>";
  48. }
  49. ?>



i acc_login.tpl:
Kod
{assign var=template value=$smarty.session.template}
{assign var=language value=$smarty.session.language}

{assign var=token value=$smarty.session.token}

<div id="acc_login">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
    <td>
        <img src="images/{$template}/spacer.gif" alt="" width="100" height="11">
    </td>
</tr>
<tr>
    <td>
        <img src="images/{$template}/{$language}/account_login.jpg" alt="" width="166" height="50">
    </td>
</tr>
<tr>
    <td class="acc_login_bg" id="acc_login_form">
        <form name="form1" method="post" action="#" onsubmit='login_into_account(document.form1.accnumber.value,document.form1.password.value,document.form1.
oken.value); return false;'>
            <table width="142" border="0" align="center" cellpadding="0" cellspacing="0">
                <tr>
                    <td class="text1">
                    {$lang.acc_num}:
                    </td>
                </tr>
                <tr>
                    <td>
                    <input name="accnumber" type="text" class="input1">
                    </td>
                </tr>
                <tr>
                    <td class="text1" >
                    {$lang.password}:
                    </td>
                </tr>
                <tr>
                    <td>
                    <input name="password" type="password" class="input1">
                    </td>
                </tr>
                <tr>
                    <td class="text1">
                     &nbsp;
                    </td>
                </tr>
                <tr>
                    <td align="center">
                        <img id="Token_Img" src="token.php" alt="" onClick="">
                    </td>
                </tr>
                <tr>
                    <td class="text1">
                    {$lang.token}:
                    </td>
                </tr>
                <tr>
                    <td>
                    <input name="token" type="text" class="input1" autocomplete = "off"  maxlength="5">
                    </td>
                </tr>
                <tr>
                    <td>
                    <img src="images/{$template}/spacer.gif" alt="" width="100" height="8">
                    </td>
                </tr>
                <tr>
                    <td>
                    <table width="142" border="0" cellspacing="0" cellpadding="0">
                        <tr>
                            <td width="85">
                            <p>
                            <a href="#" class="link1">{$lang.acc_lost}</a><br>
                            <a href="#" class="link1">{$lang.register}</a>
                            </p>
                            </td>
                          
                            <td width="57">
                            <input type="image" name="imageField" src="images/{$template}/{$language}/login.jpg">
                            </td>
                        </tr>
                    </table>
                    </td>
                </tr>
            </table>
        </form>
    </td>
    <td class="acc_login_bg" id="acc_login_load"></td>
</tr>
</table>
</div>


Pozdr,
Valker

PS: Cała strona jest zrobiona w Ajaxie.
tommy4
To spróbuj nadać dynamiczną nazwę obrazkowi, np.

token.php?time={UNIXTIME}

badz jak to nie zadziala to przez mod_rewrite

token_{UNIXTIME}.jpg

Oczywiście zamiast UNIXTIME trzeba wstawić aktualny czas z funkcji time()

I "odświeżanie".
Valker
wolał bym jednak zrobić bez dodatkowych plików.
Naprawdę nikt nie ma pomysłu jak to zrobić ?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.