Autor Zpráva
JohnGog
Profil
Dobrý den,
funguje GB, ale nefunguje to aby nový příspevěk byl nahoře... (když se budu chtít dívat na nejnovější příspěvek, tak abych nemusel rollovat až dolu, chápete?), toto chci v kódu nějak ošetřit...

a další dotaz, že u políčka EMAIL smí bejt za tečkou jen 4 znaky ... viz abyste max mohl napsat: jakpsatweb@seznam.info (proste za tečkou jen max 4 znaky....); neřešit v MYSQL


[/pre]<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title></title> 
</head> 
<body> 
<br> 
<h1>Guestbook:</h1> 
<form action="guestbook.php" method="POST"> 
Vaše jméno: <input type="text" name="jmeno"> <br> 
Váš email: <input type="text" name="email"> <br> 
Vzkaz pro nás:	 <br> 
<textarea name="zprava" cols="50" rows="8"></textarea> <br> 
<input type="submit" value="odeslat" name="odeslat" ><br> 
Za sedmero ****** : <input type="text" name="nahoda"> <br> 
<br> 
</form> 

<?php 
$nahodax = $_POST['nahoda']; 
$random = "horami"; 
if($random == $nahodax) 
{ 
if(!empty($_POST['odeslat'])) 

{ 
$datum = date("l-m-Y",Time()); 
$text = '<b>'.'Čas: '.'</b>'.$datum.'<br>'.'<b>'.'Jméno: '.'</b>'.$_POST['jmeno'].'<br>'.'<b>'.'Email: '.'</b>'.$_POST['email'].'<br>'.'<b>'.'Zpráva: '.'</b>'.$_POST['zprava'].'<br>'.'<br>'.'<hr>'; 
$soubor = fopen("soubor.txt", "a+"); 
fwrite($soubor, $text); 
fclose($soubor); 

$soubor = fopen("soubor.txt", "r"); 
$zaloha = fread($soubor, 10000); 
echo($zaloha); 
fclose($soubor); 
} 
} 
?> 
</body> 
</html>[pre]
AM_
Profil
JohnGog:
a další dotaz, že u políčka EMAIL smí bejt za tečkou jen 4 znaky
Má to nějaký rozumný důvod? Není žádným pravidlem, že top-level doména nemůže mít více znaků (mám pocit, že jsem o nějakou s více i někde zavadil).

funguje GB, ale nefunguje to aby nový příspevěk byl nahoře..
Jasně, protože příspěvky přidáváš na konec souboru. Pokud se chceš vyhnout krkolomnému parsování soubor.txt a změně pořadí, udělal bych to prostě tak, že nové příspěvky se budou ukládat na začátek, a nikoli na konec.

Navíc, štípněte mě, jestli se mi to zdá, ale ty vypisuješ příspěvky až po tom, co uživatel odešle svůj příspěvek (je to v podmínce !empty($_POST['odeslat']) )? a jen prvních 10 000 bytů? To je docela divné, ne?
Jinak se to dá řešit takhle:
$soubor = fopen("soubor.txt", "r+"); 
$original = fread($soubor, filesize('soubor.txt'));
fseek($soubor, 0);
ftruncate($soubor, 0);
fwrite($soubor, $text);
fwrite($soubor, $original);
fclose($soubor);
JohnGog
Profil
1.Nemá to rozumný důvod, je to zadání od kantorky... tak bych potřeboval řešení... kód upravit tak, aby tam bylanějaká podmínka, že za tou tečkou můžou být pouze 4 znaky

"Jasně, protože příspěvky přidáváš na konec souboru. Pokud se chceš vyhnout krkolomnému parsování soubor.txt a změně pořadí, udělal bych to prostě tak, že nové příspěvky se budou ukládat na začátek, a nikoli na konec."

Jak to napíšu? (v php začínam...)

moc děkuji...
AM_
Profil
JohnGog:
Jak to napíšu? (v php začínam...)
to je ten kus scriptu, který jsem ti napsal - přečte celý soubor, smaže ho, zapíše na začátek nový příspěvek, a za něj původní obsah. Je to z toho kódu i docela vidět ;)

1.Nemá to rozumný důvod, je to zadání od kantorky... tak bych potřeboval řešení..."
Tohle by mělo jít:
if (preg_match('~\\.[^\\.]{0,4}$~', $email)){
  echo 'ok';
}
panther
Profil
AM:
Tohle by mělo jít:
to by sice mělo jít, ale jestli jsem dobře pochopil, že se jedná o výuku základů PHP, hned tam na kantorku vytáhnout takovýhle regulár? No nevím :-)
AM_
Profil
panther:
to by sice mělo jít, ale jestli jsem dobře pochopil, že se jedná o výuku základů PHP, hned tam na kantorku vytáhnout takovýhle regulár? No nevím :-)
No, pokud chtěla, aby to dělal nějakou magií přes substr a strpos, tak to teda hodně štěstí, ale to mu tu vypiplávat nebudu :)
Pravda, přes strrpos() by to šlo jednoduše.
JohnGog
Profil
Po úpravě kód vypadá nasledovně s chybou: Warning: fread() [function.fread]: Length parameter must be greater than 0 in C:\xampp\htdocs\Guestbook\guestbook.php on line 35

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
        <br>
        <h1>Guestbook:</h1>
        <form action="guestbook.php" method="POST">
        Vaše jméno: <input type="text" name="jmeno"> <br>
        Váš email: <input type="text" name="email"> <br>
        Vzkaz pro nás:		  <br>
        <textarea name="zprava" cols="50" rows="8"></textarea>  <br>
        <input type="submit" value="odeslat" name="odeslat" ><br>
        Byl jednou ..... : <input type="text" name="nahoda"> <br>
        <br>
        </form>

        <?php
$nahodax = $_POST['nahoda'];
$random = "jeden";
if($random == $nahodax)
    {
    if(!empty($_POST['odeslat']))
    
    {            
$datum = date("l-m-Y",Time());
$email = $_POST['email'];
$text = '<b>'.'Čas: '.'</b>'.$datum.'<br>'.'<b>'.'Jméno: '.'</b>'.$_POST['jmeno'].'<br>'.'<b>'.'Email: '.'</b>'.$_POST['email'].'<br>'.'<b>'.'Zpráva: '.'</b>'.$_POST['zprava'].'<br>'.'<br>'.'<hr>';
if (preg_match('~\\.[^\\.]{0,4}$~', $email)){


$soubor = fopen("soubor.txt", "r+");
$original = fread($soubor, filesize('soubor.txt'));
fseek($soubor, 0);
ftruncate($soubor, 0);
fwrite($soubor, $text);
fwrite($soubor, $original);
fclose($soubor);
}
else
    {echo("ŠPATNÁ PŘÍPONA");}
    }
    }
    else {echo("ŠPATNÁ ODPOVEĎ");}
        ?>
    </body>
</html>
JohnGog
Profil
už mi vše funguje (prozatim dokud nedostanu nové zadání), moc děkuju za pomoc.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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