| Autor | Zpráva | ||
|---|---|---|---|
| JohnGog Profil |
#1 · Zasláno: 17. 3. 2010, 19:49:40
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 |
#2 · Zasláno: 17. 3. 2010, 20:09:17
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 |
#3 · Zasláno: 17. 3. 2010, 20:20:17
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 |
#4 · Zasláno: 17. 3. 2010, 20:38:25
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 |
#5 · Zasláno: 17. 3. 2010, 20:39:44
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 |
#6 · Zasláno: 17. 3. 2010, 20:41:37 · Upravil/a: AM_
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 :-)“ Pravda, přes strrpos() by to šlo jednoduše. |
||
| JohnGog Profil |
#7 · Zasláno: 17. 3. 2010, 21:39:45
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 |
#8 · Zasláno: 17. 3. 2010, 22:32:29
už mi vše funguje (prozatim dokud nedostanu nové zadání), moc děkuju za pomoc.
|
||
|
Časová prodleva: 16 let
|
|||
0