Autor Zpráva
BedyR
Profil
Dobrý,

Nevím jestli jsem zde správně protože problém se týká HTML, ale mám tam i PHP.

Mám stránku s tabulkou z které vyberu řádek a ten pak můžu editovat nebo rušit.
Výběrem řádku se uloží do SESSION informace o ID řádku.
Pak stiskem tlačítka EDIT se zobrazí formulář pro editaci konkretního řádku dle ID.

Ve všech prohlížečích to funguje správně, jen CHROME provede toto:
- po klepnuti na řádek tabulky načte formulář sám dvakrát ,
po prve je v GETu správná hodnota ta se uloží do ID a vykreslí formulář
po druhém je v GETu hodnota 'favicon.ico' ta se uloží do ID ale nepřekreslí formulář
- takže po stisku na EDIT nedojde k editaci odpovídajícího řádku.

udělal jsem malí příkladek:

index.php - uložen na lokále ve složce test
<?php

  session_start();

  if (!isset($_SESSION['ID'])) {
      $_SESSION['ID']      = 0;
      $_SESSION['pruchod'] = 1;
      $_SESSION['GET']     = array();
  }
  else {
      $_SESSION['pruchod'] ++;
  }

  if (count($_GET)>0) {
      $_SESSION['GET'][$_SESSION['pruchod']] = $_GET;
      $_SESSION['ID']                        = $_GET['rade'];
  }

  if (count($_POST)>0) {
      if (isset($_POST['EDIT'])) { $idedit = $_SESSION['ID']; }
      $_SESSION['GET'] = array();
  }
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html40/loose.dtd">
<html>
  <head>
    <link rel="icon" href="favicon.ico">
  </head>
  <body>
          <div class="seznam">

            <div id="sez_popis">
                <span class="hlav">Kod</span>
            </div>

            <div id="sez_rad">

              <a class="rad" href="http://localhost/test/rec/1">
                  <div class="pol">0001</div>
              </a>

              <a class="rad" href="http://localhost/test/rec/2">
                  <div class="pol">0002</div>
              </a>

              <a class="rad" href="http://localhost/test/rec/3">
                  <div class="pol">0003</div>
              </a>

            </div>

          </div>
          <form method="post" action="http://localhost/test/index.php" enctype="multipart/form-data" target="_self">
            <input name="EDIT" type="submit" value="Edit">
          </form>
<?php

  if (count($_GET)>0) {
      echo "<br>GET<pre>".print_r($_SESSION['GET'],true)."</pre>";
      echo "ID ".$_SESSION['ID'];
  }

  if (count($_POST)>0) {
      echo "idedit ".$idedit."<br>";
      echo "ID ".$_SESSION['ID'];
  }

?>

  </body>
</html>

.htaccess - uložen na lokále ve složce test
## PHP
php_value memory_limit 48M
php_value post_max_size 48M
php_value upload_max_size 48M
php_value upload_max_filesize 256M
php_value max_execution_time 2000
php_value max_input_time 2000

## Nastavení register_globals
<IfModule mod_php5.c>
php_flag register_globals on
</IfModule>
##
AddType application/x-httpd-php .php .php5
DirectoryIndex index.php index.html info.html
## Přesměřování a podstrkávání
RewriteEngine On
Options +FollowSymlinks
#                                                         pokud je to zanorene v nejakem adresari, uvedte ho za /
RewriteBase /test/
#                                                         ignoruje vsechny opravdove adresare
RewriteCond %{REQUEST_FILENAME} !-d
#                                                         ignoruje vsechy opravdove soubory (php skripty, obrazky, styly)
RewriteCond %{REQUEST_FILENAME} !-f
#                                                         vsechno ostatni necha vygenerovat index.php ( ten rozhodne jaky ma mit obsah)   [L]
RewriteRule ^rec/(.*)/?$ index.php?rade=$1

Pokud odstraním z html hlavičky
<link rel="icon" href="favicon.ico">
funguje vše správně i v CHROME a formulář je načten jen jednou.

Jenže 'favicon' tam musí být.
Mohl by mi někdo poradit. Díky
Davex
Profil
Existuje v adresáři test/ soubor favicon.ico? Zkus udělat vyjímku, že když bude v GET hodnota favicon.ico, tak se skript ukončí.
BedyR
Profil
Davex:
Ve složce test je soubor favicon.ico.
Nejdřív jsem to řešil tak že jsem v části testující GET udělal podmínku
if (isset($_GET['rade'])) { if ($_GET['rade']!='favicon.ico') { zpracování GET['rade']  } }. 
Už je v ID správná hodnota ale , neřeší to dvojí spouštění.
Pak jsem dal úplně na začátek index.php podmínku
<?php if ($_GET['rade']!='favicon.ico') { zpracování  } ?>
Minimalizuje zpracování v druhém spuštění ( což je asi cos myslel).
No, ale spouští se to dvakrát !
Uvažoval jsem jestli nemusí mít CHROME jinak zapsaný ten favicon.ico , když u jiných prohlížečů to proběhne jednou, že musí být něco co způsobí refreš .
Zatím dík.


Původně jsem tam měl řádky:
<link rel="shortcut icon" href="favicon.ico">
<link rel="icon" type="image/gif" href="animated_favicon.tif">
U GETu to procházelo třikrát.
U POSTu pouze jednou. Zvlášťní.
Davex
Profil
BedyR:
Tak tam dej odkaz na favicon takový, aby se načítal přímo z adresáře /test/ a nenačítal se z cesty, která se přepisuje na index.php

<link rel="shortcut icon" href="/test/favicon.ico">
<link rel="icon" type="image/gif" href="/test/animated_favicon.tif">
BedyR
Profil
Davex:
Dík,
to bylo to ono co dělá život krásný.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0