Akihabara.cz


Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.

Příspěvky - Skogen

Stran: [1] 2 3 ... 21
1
Novinky / Re:Realita - Co všechno se bude mazat
« kdy: 11. Prosinec 2017 - 22:26:56 »
Když si vzpomenu, jak před časem moderátoři horovali za jediné správné úložiště titulků tady na tom serveru, tak se musím smát.

2
Všeobecná diskuze o Japonsku / Re:Zásilka z Japonska
« kdy: 23. Březen 2017 - 16:19:38 »
jo, můžu je tam taky zařadit.. ^^ už jsem dostal dotaz i na pocky balíček, takže zkusím co nejrychleji doplnit. I když nemůžu říct, kdy přesně to bude..

A co na zkoušku třeba spešl přání :) Já takhle sháněl „taiyakovač“, jenže s tím origo japonským byl docela problém. Na eBay asi jen dvě nabídky. Měl bys s tím sice víc práce a po dohodě si musel říct o platbu předem, ale na druhou stranu nikdo nic takového nenabízí a ty bys mohl, když jsi u zdroje.

3
Počítače / Re:Pomoc s webovými stránkami
« 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?

4
Počítače / Re:Pomoc s webovými stránkami
« 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

5
Počítače / Re:Pomoc s webovými stránkami
« kdy: 16. Březen 2017 - 23:20:36 »
BTW, jak se vede v Japonsku? Máš nějaký blog :)?

6
Počítače / Re:Pomoc s webovými stránkami
« 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

7
Počítače / Re:Pomoc s webovými stránkami
« kdy: 16. Březen 2017 - 20:02:21 »
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.

Faraonův skript funguje. Když ho upravím tak, jak bych ho použil já, tedy přímo s html kódem v souboru s příponou PHP, bude to takto:

Kód: [Vybrat]
<?php 
session_start
();
    
$FLASH_MESSAGE 'FLASH_MESSAGE'// melo by to byt jako konstanta, ale takhle to taky pujde. Kdybys nahodou chtel pak prepsat nazev, 
//tak to nemusis delat na 3 misech, ale jen zde. Takze tohle nicim nepresisovat. :-)
    
$correctSpamAnswer "47";

    
$to "email@example.com"// prijemce
    
$from = isset($_POST['email']) ? htmlspecialchars(trim($_POST['email'])) : ""// odesilatel
    
$jmeno = isset($_POST['jmeno']) ? htmlspecialchars(trim($_POST['jmeno'])) : ""
    
// Zapis je v prekladu tohle: if(isset($_POST['jmeno'])) {$jmeno = htmlspecialchars($_POST['jmeno']); } else { $jmeno = ""}
    // rika se tomu ternarni operator, a pouziva se jen na banalni podminky. Zde to je pro kratsi zapis.
    
$adresa = isset($_POST['adresa']) ? htmlspecialchars(trim($_POST['adresa'])) : ""
    
$mem_no = isset($_POST['mem_no']) ? htmlspecialchars(trim($_POST['mem_no'])) : "";
    
$spam $_POST['spam'];
    
$subject "Formulář Název webu";
    
$subject2 "Kopie Vaší zprávy";
    
$zprava = isset($_POST['zprava']) ? htmlspecialchars(trim($_POST['zprava'])) : "";
    
    
$message $jmeno "<br/><br/>" $adresa "<br/><br/>" $mem_no "<br/><br/>" $zprava;
    
$message2 "Zde je kopie Vaší zprávy odeslané z formuláře na http://www.domena.cz/" "<br/><br/>" $jmeno "<br/><br/>" $adresa "<br/><br/>" $mem_no "<br/><br/>" $zprava;

$headers 'MIME-Version: 1.0' "\r\n";
$headers .= 'Content-Type: text/html; charset=utf-8' "\r\n";
$headers .= 'From: '.$from"\r\n";
$headers2 'MIME-Version: 1.0' "\r\n";
$headers2 .= 'Content-Type: text/html; charset=utf-8' "\r\n";
$headers2 .= 'From: '.$to"\r\n";

$reportSend "";
$resultMessage "";
$report "";
    
    if(isset(
$_SESSION[$FLASH_MESSAGE])) {
        
$reportSuccess $_SESSION[$FLASH_MESSAGE];
        unset(
$_SESSION[$FLASH_MESSAGE]); // Odstranime flash zpravu ze session, protoze uz svuj ucel splinala.
    


  if(isset(
$_POST['submit']))   
{
    
if($spam == $correctSpamAnswer and $jmeno != "" and $zprava != "" and filter_var($fromFILTER_VALIDATE_EMAIL))
    
{        
          
$sendMailStatusSeller =  mail($to,$subject,$message,$headers);
         
          if (
$sendMailStatusSeller) { // Je dulezity aby vedel ze to dosli minimalne tobe a budes se tomu venovat
              
mail($from,$subject2,$message2,$headers2); // Kopii odesilatele posunu sem do dalsiho kroku, kdyby se to neodeslalo jen tobe. Pak mi byl zmatenej co to pise web, kdyz jemu prisla informace v poradku.
              // Nacpeme si odpoved do sessiony a refreshneme stranky, aby nikdo nemohl formular odeslat vicekrat
              
$_SESSION[$FLASH_MESSAGE] = "<li>Email odeslán, brzy Vás kontaktujeme</li>";
              
header('Location: http://www.example.com/');
              exit;
          } else {
              
$reportSend "<li>Chyba při odeslání! Zkuste to prosím znovu nebo později.</li>";  
          }    

    
}
 if ($jmeno == ""$reportName "<li>Jméno musí být vyplněno</li>";
 else $reportName "";
 if ($zprava == ""$reportText "<li>Zpráva musí být vyplněna</li>";
 else $reportText "";
 if (!filter_var($fromFILTER_VALIDATE_EMAIL)) $reportEmail "<li>Neplatná emailová adresa</li>";
 else $reportEmail "";
         if (
$spam != $correctSpamAnswer$reportSpam "<li>Špatně vyplněný antispam</li>"
 else $reportSpam ""
}

$resultMessage $reportSuccess.$reportSend.$reportName.$reportEmail.$reportText.$reportSpam;
  
  if(!empty(
$resultMessage)) {
      
$report '<ul class="form_success">' $resultMessage '</ul>';
  }
  
  
echo 
"
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">


<head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />
<title></title>
<link rel=\"stylesheet\" type=\"text/css\" href=\"styles.css\" />
<meta name=\"description\" content=\"\" />
<meta name=\"keywords\" content=\"\" />
<link rel=\"shortcut icon\" href=\"favicon.ico\" />
</head>


<body>
<h2>Webový formulář</h2>

<div class=\"par_form\">   
<form action=\"\" method=\"post\">
    <div class=\"form_name\"> <label for=\"jmeno\">Jméno a příjmení:</label> <input type=\"text\" name=\"jmeno\" value=\""
.$jmeno."\" size=\"20\"></div>
    <div class=\"form_email\"><label for=\"email\"></label>Email:</label> <input type=\"text\" name=\"email\" value=\""
.$from."\" size=\"20\"></div>
    <div class=\"form_mem_no\"><label for=\"mem_no\">Členské číslo:</label> <input type=\"text\" name=\"mem_no\" value=\""
.$mem_no."\" size=\"20\"></div>
    <div class=\"form_address\"><label for=\"adresa\">Adresa:</label> <input type=\"text\" name=\"adresa\" value=\""
.$adresa."\" size=\"60\"></div>
    <div class=\"form_message\"><label for=\"zprava\">Zpráva:</label> <textarea name=\"zprava\" rows=\"5\" cols=\"60\" >"
.$zprava."</textarea></div>
    <div class=\"form_spam\"><label for=\"spam\">Počet prefektur Japonska:</label> <input type=\"text\" name=\"spam\" size=\"2\"></div>
    <div class=\"form_button\"><input type=\"submit\" name=\"submit\" value=\"Odeslat\"></div>
</form>

"
.$report."

</body>
</html>
"
;
  
  
?>


Je to kompletně celý soubor, který se bude nějak jmenovat, třeba kontakt.php. Doplněno o nějakou tu validaci a výpis seznamu chybně zadaných údajů.

Pozor na triviální chyby při použití šablony:

  • $to - doplň svůj email
  • header("location: http://www.example.com/") - doplň URL své stránky s formulářem, kde bude tento skript - na ni header přesměrovává a zde se ti zpracuje session se zprávou o úspěšném odeslání mailu

Na začátku skriptu jsem startoval session, nevím, jak to máš nastaveno, jestli ti to vyplivne hlášku, že session už nastartovaná je, session_start() smaž.

EDIT: Zapomněl jsem změnit odřádkování ve zprávě z \n na <br/>, jedná se o html formát - opraveno.

8
Počítače / Re:Pomoc s webovými stránkami
« kdy: 16. Březen 2017 - 11:25:00 »
Předpokládám, že to ladíš přímo na serveru. Nejdřív tedy otestuj funkčnost skriptu bez fcí mail, postačí, když se ti bude vypisovat hláška o úspěšném odeslání. Nebudeš tak zatěžovat mailserver a čekat na maily ve schránce. U Faraonova skriptu bys musel dočasně odstranit konstrukci, která ověřuje odeslání. Měň skript po krocích a sleduj, zda dělá, co má. Fci mail samotnou otestuj až nakonec.

Určitě hlavičku FROM uprav i s tím
Kód: [Vybrat]
". \r\n"; na konci. I když to vypadá divně, je to podle specifikace a některé mailservery jsou na to háklivé.

Někteří spamboti už umí přečíst i captchu, takže je mnohdy tak zprzněná, že už ji pořádně nepřečte ani lidský uživatel, proto captchu nemám rád. S tím dnem to není špatné, problém by mohl nastat, pokud by uživatel vepsal datum vteřinu a dříve před půlnocí a odeslal formulář vteřinu a déle po půlnoci. Pak by shoda nenastala a asi by ho to zmátlo.

Něco je popsáno zde: http://jecas.cz/spam

Když se důsledně validuje více odesílaných políček formuláře, třeba jméno, ID, ale lze i tu adresu, nemusí být antispam ani potřeba. Boti se v naprosté většině případů snaží nacpat do inputů webové a mailové adresy plus nějaké fráze a ty dobrou validací neprojdou.

Jo, našeptávání dříve zadaných hodnot do inputů je dílo cache prohlížeče, když mu to uživatel umožní, t.j. nezakáže a nevymaže. Ale to je něco jiného, než je potřeba. Tady je třeba jen to, aby když odeslání skončí neúspěchem, se do value inputu přeneslo, co z něj bylo naposledy odesláno. A to je v proměnné $_POST['nazev-inputu']. Uživatel si opraví, co potřebuje a odešle to znova, protože políčko odesílá vždy svůj obsah (nyní upravený) a ten ty přes POST překlápíš do value. Když to skončí úspěchem, header("location: adresastranky.php") formulář zresetuje a všechny proměnné se zapomenou, respektive se načtou výchozí hodnoty. Políčka tedy budou prázdná (krom výchozího zavináče v poli pro mail) a nedojde k opětovnému odeslání, ani když uživatel refreshne stránku. Tvůj skript si i po odeslání hodnoty pamatuje, a kdyby uživatel znovunačetl stránku, odešel by mail podruhé atd...

Jinak bych fakt doporučoval začlenit html kód přímo do php souboru, pak bys pouze escapoval uvozovky (případně apostrofy) a mohl do html vkládat přímo proměnné.

Konec Faraonova skriptu by tedy vypadal takto:

Kód: [Vybrat]
...

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


echo "
<!-- Tady by byl DOCTYPE -->

<head>
<!-- html hlavička se vším, co do ní patří -->
</head>

<body>

<!-- Nadpis, další text, atd... -->

<div class=\"par_form\">   
<form action=\"\" method=\"post\">
    <div class=\"form_name\"> <label for=\"jmeno\">Jméno a příjmení:</label> <input type=\"text\" name=\"jmeno\" value=\"".$jmeno."\" size=\"20\"></div>
    <div class=\"form_email\"><label for=\"email\"></label>Email:</label> <input type=\"text\" name=\"email\" value=\"".$from."\" size=\"20\"></div>
    <div class=\"form_mem_no\"><label for=\"mem_no\">Členské číslo:</label> <input type=\"text\" name=\"mem_no\" value=\"".$mem_no."\" size=\"20\"></div>
    <div class=\"form_address\"><label for=\"adresa\">Adresa:</label> <input type=\"text\" name=\"adresa\" value=\"".$adresa."\" size=\"60\"></div>
    <div class=\"form_message\"><label for=\"zprava\">Zpráva:</label> <input type=\"text\" name=\"zprava\" value=\"".$zprava."\" size=\"60\"></div>
    <div class=\"form_spam\"><label for=\"spam\">Počet prefektur Japonska:</label> <input type=\"text\" name=\"spam\" size=\"2\"></div>
    <div class=\"form_button\"><input type=\"submit\" name=\"submit\" value=\"Odeslat\"></div>
</form>


<!-- Patička nebo bůhvícoještě -->

</body>
";

?>

... a samozřejmě by to mělo příponu .php místo .html. Veškerá echa by bylo možné nahradit proměnnými a proměnné pak vypisovat, kde by bylo třeba takto:

Kód: [Vybrat]
echo "
Nějaký nekonečně dlouhý text, který má sto dvacet pět a půl slova ".$tadyVypisuPromennou." a pokaračuju dál textem, abych ".$vypsalDruhou.$aTreti.$aCtvrtou." proměnnou v jediném echu, což je hospodárnější...
";

9
Počítače / Re:Pomoc s webovými stránkami
« kdy: 16. Březen 2017 - 04:55:41 »
Faraon si s tím dal práci a má ve všem pravdu, ale je to maximalista (bez urážky, Farao  ;) ), ty si pro své potřeby vystačíš i s tím, co bude z jeho pohledu dejme tomu za 3 mínus.  Když to bude za 2, uspokojíš menší zákazníky a za 1 budeš vyhrávat konkurzy   ;D

Mám jen jednu poznámku, že když to uděláš přesně takhle, dostane uživatel v případě neodeslání mailu zpátky do formuláře speciální znaky převedené na entity a bude na to koukat jako jelen, takže do formuláře bych vracel čistý POST neošetřený htmlspecialchars.

Většinu potřebného najdeš tady: https://www.jakpsatweb.cz/ , zejména  v diskuzi, a tady: http://jecas.cz/ . Jsou to weby specializované na tuto problematiku a pomocí hledání (nemají rádi, když se na fóru hned ptáš) vždy najdeš něco, od čeho se odrazit, protože skoro všechno už se někdy řešilo.

Faraonův kód použij a pak si zkus bokem postupně rozvinout ten svůj vlastní, s tím, že budeš postupně funkcionality přidávat.

10
Počítače / Re:Pomoc s webovými stránkami
« kdy: 15. Březen 2017 - 15:02:28 »
Hlavička by měla vypadat takto:

$headers .= 'From: '.$from. "\r\n";

Chybí mi tam MIME type a kódování:

$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-Type: text/html; charset=utf-8' . "\r\n"; // Pokud kóduješ v UTF-8 a chceš mít html formát mailu, což ti umožní použít některé tagy (ale pozor, maily snesou jenom něco)

Určitě by to chtělo validovat alespoň emailovou adresu, nabízí se:


filter_var($from, FILTER_VALIDATE_EMAIL)

Takže podmínka pro vykonání fce mail by byla


if($spam=="47" and filter_var($from, FILTER_VALIDATE_EMAIL))

Pak by to chtělo sdělit, proč vlastně došlo k chybě v odeslání, takže raději:

if(isset($_POST['submit']))

   {
   if($spam=="47" and filter_var($from, FILTER_VALIDATE_EMAIL))
      {
       mail($to,$subject,$message,$headers);
      mail($from,$subject2,$message2,$headers2); // kopie odesilateli
      echo "<div class=\"form_success\">Email odeslán, brzy Vás kontaktujeme.</div>";
      }
      elseif ($spam != "47") echo "<div class=\"form_success\">Chyba! Špatný antispam.</div>";
      else echo "<div class=\"form_success\">Chyba! Špatná mailová adresa.</div>";

   }

Krom toho by bylo dobré ověřovat alespoň, zda některá (nutná) pole formuláře nejsou odesílaná prázdná. Je možná i kontrola řetězců, ale to už bude chtít regulární výrazy a ty si nech na později.

Jako zprávu raději textareu než input.

Velice mrzuté je, že při neúspěšném odeslání se vymaže celý formulář, do value inputů bys tedy měl načítat odesílané informace, aby ve formuláři zůstaly pro opravu chybně zadaných údajů, při úspěšném odeslání je vyresetovat.

Na Captchu se vykašli, časem si nech třeba generovat náhodné číslo, které ať uživatel přepíše slovem...

Ještě bych se zamyslel, pokud podstatnou část bude tvořit PHP, zda kód nepsat přímo v PHP (index.php místo index.html) a veškeré textové výstupy neukládat do proměnných a ty pak společně s html kostrou stránky nevypisovat v jediném echo. Umožnilo by to lépe formátovat výstupy.

11
Počítače / Re:Pomoc s webovými stránkami
« kdy: 13. Březen 2017 - 17:56:40 »
Nevyhodí to ani report. Ostatně, proč by prvek pole nemohl být prázdný...

Já ti rozumím a nehádám se. Vztahovalo se to k tomu konkrétnímu příkladu, kde samozřejmě dostanu pole o čtyřech prvcích, kdy v cyklu for (protože $c = 1, aby bylo možno pro výčet použít $c++) dostávám jako první hodnotu 1 a nikoliv 0 a právě proměnná $c je použita jako index pro výpis prvku pole. Jiná možnost by byla od $c odečítat 1, prašť jako uhoď.

Klidně může do session ukládat rovnou pole, myslím, že už si s tím nějak poradí :)

12
Počítače / Re:Pomoc s webovými stránkami
« kdy: 13. Březen 2017 - 14:46:56 »
Pročpak by to mělo skončit chybou :)? Testoval jsi to? Já jo. Menší nebo rovno je tam z toho důvodu, že první položka přece bude v indexu začínat jedničkou ($c = 1), takže nemůžu vypisovat $ukazKosik[0], tedy s <= proběhne žádoucí cyklus navíc. A nebude tam mít pole, bude tam mít string. Foreach by tedy skončil chybou.


No, já jsem taky samouk a věnuju se tomu jen tak bokem. Faraon má pravdu, že foreach by byl vhodnější, pokud bys ukládal do session rovnou pole. Prostě si s tím pohraj, časem to stejně uděláš :)

13
Počítače / Re:Pomoc s webovými stránkami
« kdy: 13. Březen 2017 - 11:59:42 »
S jednorozměrným polem si vůbec hlavu nedělej. Není to nic složitého. Potřebuješ jen explode, count a cyklus for.

První ti rozdělí řetězec podle tebou určeného znaku, druhá funkce spočítá počet prvků pole (u tebe položek), no a když počet prvků pole dosadíš jako maximum opakování cyklu, for ti položky vypíše.

V session $_SESSION['kosik'] je dejme tomu uloženo

~Hentai 200,- Kč~Zase hentai 300,- Kč~Super hentai 400,-Kč

nasekáš tedy řetězec z session na položky

$ukazKosik = explode("~", $_SESSION['kosik']);

spočítáš počet položek

$pocet = count($ukazKosik);

a pak už jen vypíšeš cyklem

for($c = 1; $c <= $pocet; $c++){
echo "<br/>".$ukazKosik[$c];
}

To je princip. Z každé položky pole taky můžeš získat další pole, abys dostal zvlášť název a zvlášť cenu (když si je při ukádání do session taky oddělíš [jiným] separátorem), kterou pak můžeš sčítat... Nebo si hrát s hmotností...

Tady jsem kdysi dělal košík právě přes session.

14
Novinky / Re:Akihabara v3
« kdy: 12. Březen 2017 - 22:04:08 »
Co zde zaznělo, se týká spíš správců než uživatelů. Uživatele zajímá jenom to, co vidí. A myslím, že běžně moc nekoukají ani do toho adresního řádku :) Takže pokud se chcete ptát, co uživatelé na to, asi by to chtělo vyzvednout něco očividného ;)

15
Počítače / Re:Pomoc s webovými stránkami
« kdy: 12. Březen 2017 - 21:41:34 »
Tak zrovna pro košík by bylo použití session smysluplnější než pro přechod mezi stránkami...

Stran: [1] 2 3 ... 21