akichan
napoveda vypnout Akichan patička

Akihabara.cz


Autor Téma: Pomoc s webovými stránkami  (Přečteno 33032 krát)

0 uživatelů a 1 Host prohlíží toto téma.

Offline ピンクセイコ

  • Veterán
  • *****
  • なんかちがう...
Re:Pomoc s webovými stránkami
« Odpověď #60 kdy: 16. Březen 2017 - 21:30:15 »
Chce to všímat si těch chybových hlášek a když tak je překopírovat, bez toho, anebo bez uvedení kódu, nelze říct, co je špatně, pouze tipovat.
jj, akorát mi to došlo až po vyřešení problému.. ^^;

To je ta tvá session magie na generovaní URL. Tady krásně vidíš, jeden z příkladů proč bys to tam cpát neměl. ;-)
nj.. header() používám při každám kliknutí na odkaz v menu - nastavím hodnotu session, refreshnu, a podle hodnoty session pomocí include poskládám aktuální stránku.. takže z toho mi vychází, že nemůžu jen tak použít dvě session..

A v podmínce ti zmizeli složený závorky:
díky, doplněno.. ^^;

Offline Skogen

  • Veterán
  • *****
  • Cynický objektivista
Re:Pomoc s webovými stránkami
« Odpověď #61 kdy: 16. Březen 2017 - 21:45:37 »
nj.. header() používám při každám kliknutí na odkaz v menu - nastavím hodnotu session, refreshnu, a podle hodnoty session pomocí include poskládám aktuální stránku.. takže z toho mi vychází, že nemůžu jen tak použít dvě session..

Každá session se nějak jmenuje, klidně mohou být dvě a víc... Spíš je to řešení sice kreativní, ale rozhodně neobvyklé a ovšem taky nepraktické. Proč by se měla stránka načítat dvakrát? Při kliknutí na odkaz přece můžeš získat adresu tohoto odkazu pomocí GET a nainkludovat rovnou to, co potřebuješ, bez nějaké zbytečné refreshe.

odkaz:

Kód: [Vybrat]
<a href="nekam.html?page=baf">Stránka baf</a>
inkludování:

Kód: [Vybrat]
include "cestaksouboru/".$_GET['page'].".txt"; // asi budeš načítat nějaký obsah někam do jediné šablony
« Poslední změna: 16. Březen 2017 - 21:47:33 od Skogen »

Offline ピンクセイコ

  • Veterán
  • *****
  • なんかちがう...
Re:Pomoc s webovými stránkami
« Odpověď #62 kdy: 16. Březen 2017 - 22:52:54 »
Spíš je to řešení sice kreativní, ale rozhodně neobvyklé a ovšem taky nepraktické. Proč by se měla stránka načítat dvakrát? Při kliknutí na odkaz přece můžeš získat adresu tohoto odkazu pomocí GET a nainkludovat rovnou to, co potřebuješ, bez nějaké zbytečné refreshe.
nevím.. pokud si dobře vzpomínám, tuhle konstrukci jsem někde našel před mnoha lety jako alternativu k iframe.. už si ani nepamatuju, proč jsem to tehdy potřeboval..

Offline Skogen

  • Veterán
  • *****
  • Cynický objektivista
Re:Pomoc s webovými stránkami
« Odpověď #63 kdy: 16. Březen 2017 - 23:20:36 »
BTW, jak se vede v Japonsku? Máš nějaký blog :)?

Offline ピンクセイコ

  • Veterán
  • *****
  • なんかちがう...
Re:Pomoc s webovými stránkami
« Odpověď #64 kdy: 16. Březen 2017 - 23:43:34 »
BTW, jak se vede v Japonsku? Máš nějaký blog :)?
napíšu raději do pm, ať tu nejsme ot..

Offline ピンクセイコ

  • Veterán
  • *****
  • なんかちがう...
Re:Pomoc s webovými stránkami
« Odpověď #65 kdy: 17. Březen 2017 - 13:18:46 »
tak další upgrade..

header totálně nechápu, zkoušel jsem ten tady z fóra, ale zrušil mi odřádkování. tak jsem něco  vygooglil, a teď to funguje. i když nevím proč..

zachování hodnot v políčkách taky asi není ideální, protože tam ty hodnoty samozřejmě zůstanou i po úspěšném odeslání, ale ok..

možná zkusit po úspěšném odeslání refreshnou.. ale teď tam je nějaká kolize, takže bych to zatím neřešil, ony tam ty hodnoty nevadí..

Citace
Warning: Cannot modify header information - headers already sent by (output started at --/data/www/--/index.php:16) in --/data/www/--/mail.php on line 35

Kód: [Vybrat]
<div class="form">

<?php 
    $correctSpamAnswer 
"47";
    
$to "email@example.com"// prijemce
    
$from = isset($_POST['email']) ? htmlspecialchars($_POST['email']) : ""// odesilatel
    
$jmeno = isset($_POST['jmeno']) ? htmlspecialchars($_POST['jmeno']) : ""
    
$adresa = isset($_POST['adresa']) ? htmlspecialchars($_POST['adresa']) : ""
    
$mem_no = isset($_POST['mem_no']) ? htmlspecialchars($_POST['mem_no']) : "";
    
$spam $_POST['spam'];
    
$subject "Formulář Název webu";
    
$subject2 "Kopie Vaší zprávy";
    
$message "Jméno: " $jmeno "\n\n" "Adresa: " $adresa "\n\n" "Členské číslo: " $mem_no "\n\n" "Zpráva: " $_POST['zprava'];
    
$message2 "Zde je kopie Vaší zprávy, odeslané z formuláře na http://www.domena.cz/" "\n\n" "Jméno: " $jmeno "\n\n" "Adresa: " $adresa "\n\n" "Členské číslo: " $mem_no "\n\n" "Zpráva: " $_POST['zprava'];
    
$zprava = isset($_POST['zprava']) ? htmlspecialchars($_POST['zprava']) : "";
    
$header "Od:" $from;
    
$header.= "MIME-Version: 1.0\r\n"
    
$header.= "Content-Type: text/plain; charset=utf-8\r\n"
    
$header.= "X-Priority: 1\r\n"
    
$header2 "Od:" $to;
    
$header2.= "MIME-Version: 1.0\r\n"
    
$header2.= "Content-Type: text/plain; charset=utf-8\r\n"
    
$header2.= "X-Priority: 1\r\n"
    
$resultMessage '';

if(isset(
$_POST['submit']))
{
if((
$spam == $correctSpamAnswer) and filter_var($fromFILTER_VALIDATE_EMAIL))
{
if($jmeno!="" and $zprava!="")
{
mail($to,$subject,$message,$headers);
mail($from,$subject2,$message2,$headers2); // kopie odesilateli
$resultMessage "Email odeslán, brzy Vás kontaktujeme.";
}
else
{
$resultMessage "Chyba! Nevyplněné jméno nebo zpráva."
}
}
else
{
$resultMessage "Chyba! Špatně vyplněná Captcha nebo email."
}

if(!empty(
$resultMessage)) 
{
echo '<div class="form_success">' $resultMessage '</div>';


?>



<div class="par_form">

<form action="" method="post">
<div class="form_name">Jméno a příjmení: <input type="text" name="jmeno" value="<?php if (isset($_POST['jmeno'])){echo $_POST['jmeno']; }?>" size="20"></div>
<div class="form_email">Email: <input type="text" name="email" value="<?php if (isset($_POST['email'])){echo $_POST['email']; } else {echo "@"; }?>" size="20"></div>
<div class="form_mem_no">Členské číslo: <input type="text" name="mem_no" value="<?php if (isset($_POST['mem_no'])){echo $_POST['mem_no']; }?>" size="20"></div>
<div class="form_address">Adresa: <input type="text" name="adresa" value="<?php if (isset($_POST['adresa'])){echo $_POST['adresa']; }?>" size="60"></div>
<div class="form_message">Zpráva: <input type="text" name="zprava" value="<?php if (isset($_POST['zprava'])){echo $_POST['zprava']; }?>" size="60"></div>
<div class="form_spam">Počet prefektur Japonska: <input type="text" name="spam" size="2"></div>
<div class="form_button"><input type="submit" name="submit" value="Odeslat"></div>
</form>

</div></div>

Offline Skogen

  • Veterán
  • *****
  • Cynický objektivista
Re:Pomoc s webovými stránkami
« Odpověď #66 kdy: 17. Březen 2017 - 13:40:53 »
Ten header location se ti totiž vůbec nevykoná.

Zkus na začátek skriptu v index.php dát:

Kód: [Vybrat]
ob_start();
a na konec:

Kód: [Vybrat]
ob_end_flush();
Jiné řešení bez bufferingu by bylo formulář pomocí action odkázat na externí php skript s

Offline ピンクセイコ

  • Veterán
  • *****
  • なんかちがう...
Re:Pomoc s webovými stránkami
« Odpověď #67 kdy: 17. Březen 2017 - 14:05:15 »
Zkus na začátek skriptu v index.php dát:
.
.
pořád stejné.. holt to musím přepsat na normální linky, pak to bude ok..

Offline FaraonX

  • Starý kořen
  • ****
  • なんくるないさ
Re:Pomoc s webovými stránkami
« Odpověď #68 kdy: 17. Březen 2017 - 14:28:26 »
header totálně nechápu, zkoušel jsem ten tady z fóra, ale zrušil mi odřádkování. tak jsem něco vygooglil, a teď to funguje. i když nevím proč..

Tohle ti říká, jdi na stránku example.com(prostě redirect):
Kód: [Vybrat]

header('Location: http://www.example.com/');
Nic víc to nedělá.

Jako myslím si, že by ten redirect neměl ničemu vadit, ale fakt netuším jak vypadá ta magie kolem. Správně má stránky vypadat pro dané URL vždy stejně. Je jedno jestli jdeš na stránku přímo z adresní řádky prohlížeče nebo se k ní proklikáš na webu přes odkazy. Pokud by refresh nebyl žádoucí, a chtěl refreshnout jen určitý blok stránky, tak bys to musel udělat přes AJAX, ale to by ses musel zase seznámit s javascriptem a myslím, že by to na tebe v této chvíli bylo zbytečně složitý.

Offline ピンクセイコ

  • Veterán
  • *****
  • なんかちがう...
Re:Pomoc s webovými stránkami
« Odpověď #69 kdy: 17. Březen 2017 - 21:17:02 »
Jako myslím si, že by ten redirect neměl ničemu vadit, ale fakt netuším jak vypadá ta magie kolem.
jj, taky jsem myslel, že to bude ok.. já tam nikde v index.php tu funkci ani nemám..
píše to varování:
Kód: [Vybrat]
Warning: Cannot modify header information - headers already sent by (output started at /mnt/data/accounts/8/--/data/www/--/index.php:15) in /mnt/data/accounts/8/--/data/www/--/cnt/mail.php on line 35
přičemž na řídku 15 v index.php mi začíná php kód
Kód: [Vybrat]
14 <BODY>
15 <?php
a na řádku 35 v mail.php je právě
Kód: [Vybrat]
header('Location: http://www.example.com/');
pokud člověk klikne na odkaz, jde na "stránku" odkaz1.php, která pouze nastaví hodnotu session, a přes header() refreshne web..

Offline FaraonX

  • Starý kořen
  • ****
  • なんくるないさ
Re:Pomoc s webovými stránkami
« Odpověď #70 kdy: 17. Březen 2017 - 23:27:46 »
jj, taky jsem myslel, že to bude ok.. já tam nikde v index.php tu funkci ani nemám..
...
Kód: [Vybrat]
14 <BODY>...
Já jsem blbec, teď mě to trklo. Vždyť ty vlastně ten PHP kód máš zanořený již v obsahu stránky. Problém je v tom, že před zavoláním header funkce nesmí jít nic na výstup, ale ty už tam předtím máš poslaný nějaký html kód. Musíš to posunout výš, než začneš vypisovat jakýkoliv html kód.

Offline ピンクセイコ

  • Veterán
  • *****
  • なんかちがう...
Re:Pomoc s webovými stránkami
« Odpověď #71 kdy: 17. Březen 2017 - 23:38:29 »
Já jsem blbec, teď mě to trklo. Vždyť ty vlastně ten PHP kód máš zanořený již v obsahu stránky. Problém je v tom, že před zavoláním header funkce nesmí jít nic na výstup, ale ty už tam předtím máš poslaný nějaký html kód. Musíš to posunout výš, než začneš vypisovat jakýkoliv html kód.
aha.. ok.. ^_^; po práci na to kouknu.. I když jak nad tím přemýšlím, asi to budu muset rozdělit na dvě části, kvůli tomu formuláři, který by se tak ocitl mimo body html kódu.. jsem zvědavý, co to udělá.. ^_^

podobnou srandu jsem si užil před těmi x lety, když jsem poprvé zkoušel dělat něco se session, a ukládal ten php soubor ve Windowsáckém notepadu.. ^_^ (ještě že existuje notepad++, který umožňuje uložit soubor v UTF-8 bez BOM..)
« Poslední změna: 17. Březen 2017 - 23:44:56 od 赤い戦車 »

Offline Skogen

  • Veterán
  • *****
  • Cynický objektivista
Re:Pomoc s webovými stránkami
« Odpověď #72 kdy: 18. Březen 2017 - 19:54:34 »
...  I když jak nad tím přemýšlím, asi to budu muset rozdělit na dvě části, kvůli tomu formuláři, který by se tak ocitl mimo body html kódu.. jsem zvědavý, co to udělá ...

A proč to neuděláš tak, jak jsem doporučoval?

Offline ピンクセイコ

  • Veterán
  • *****
  • なんかちがう...
Re:Pomoc s webovými stránkami
« Odpověď #73 kdy: 19. Březen 2017 - 00:35:18 »
A proč to neuděláš tak, jak jsem doporučoval?
začlenit html kód přímo do php souboru? nevím, přijde mi, že se v tom pak nevyznám, moje schopnost orientovat se v kódu je velmi omezená.. ^^;

každopádně, když tam místo header() dám
Kód: [Vybrat]
echo "<meta http-equiv='refresh' content='1'>";tak to funguje.. ^__^

vím, není to zrovna ideální, už jen proto, že zpráva o odeslání po refreshi samozřejmě zmizí (proto na hodnota "1", aby to tam aspoň chvíli viselo, ale zas ne moc dlouho) ale momentálně je to asi to nejlepší, na co se zmůžu.. zkoušel jsem dostat header() před všechny výstupy, ale někde jsem tam měl něco špatně, a nedařilo se mi to odstranit..
Kód: [Vybrat]
Parse error: syntax error, unexpected $end
vždycky na posledním řádku, což jsem si i vygooglil, že mi někde chybí nějaká závorka, nebo něco.. ale i tak, to prostě chce přepsat celé.. >_<

Offline FaraonX

  • Starý kořen
  • ****
  • なんくるないさ
Re:Pomoc s webovými stránkami
« Odpověď #74 kdy: 19. Březen 2017 - 11:45:29 »
každopádně, když tam místo header() dám
Kód: [Vybrat]
echo "<meta http-equiv='refresh' content='1'>";tak to funguje.. ^__^
Zavřu oči a budu dělat, že to nevidím. :-D Ale v podstatě je to totéž, jen html cestou. Ale hlavní je, že to dělá co chceš.
Jak jsi sám psal, ono by to asi chtělo nejspíš přepsat celé. Ale pokud je to něco malého a zatím nepředpokládáš, že by se to nějak dál rozvíjelo, tak by se s tím mohlo dát žít. ;-)

vím, není to zrovna ideální, už jen proto, že zpráva o odeslání po refreshi samozřejmě zmizí (proto na hodnota "1", aby to tam aspoň chvíli viselo, ale zas ne moc dlouho) ale momentálně je to asi to nejlepší, na co se zmůžu.. zkoušel jsem dostat header() před všechny výstupy, ale někde jsem tam měl něco špatně, a nedařilo se mi to odstranit..
Kód: [Vybrat]
Parse error: syntax error, unexpected $end
vždycky na posledním řádku, což jsem si i vygooglil, že mi někde chybí nějaká závorka, nebo něco.. ale i tak, to prostě chce přepsat celé.. >_<

Tak tahle hláška je taková... Mrkni na řádek co máš předtím $end. Bude tam chybět třeba středník za hodnotou, nebo ta závorka a pod blbosti.
A problém s tou pozitivní hláškou můžeš vyřešit třeba doplněním podmínky. Když dáš "smaž FLASH_MESSAGE" jen když formulář není zrovna odeslaný:

Kód: [Vybrat]
if(isset($_SESSION[$FLASH_MESSAGE]) && !isset($_POST['submit'])) {
        $reportSuccess = $_SESSION[$FLASH_MESSAGE];
        unset($_SESSION[$FLASH_MESSAGE]); // Odstranime flash zpravu ze session, protoze uz svuj ucel splinala.
    }

Jako co ti budu nalhávat, tady vidíš, jak ti začíná přibývat zbytečná logika navíc, když se to ohýbá, ale problém by to mělo vyřešit.
Když si to projdu: Při korektním odeslání formu se to uloží, pak se vykreslí stránka a udělá refresh. Vzhledem k tomu, že má form příznak, že je submit, tak se s FLASH zprávou nic neudělá, a po refreshi je furt FLASH_MESSAGE uložena, ale protože není už form poslaný, tak se smázne. Jo to by mělo projít. Takže klidně ten refresh můžeš hodit na nulu.
« Poslední změna: 19. Březen 2017 - 11:48:30 od FaraonX »