Autor Zpráva
pavel44
Profil *
Zdravím,
mám na stránce formulář který zadaný text uloží přes soubor php do souboru .txt, jak nastavit maximální délku textu, prostě bude delší tak ho neuloží.

Soubor php:
<?
error_reporting(0);
function getlatest() {
	$latestsearches = "latest.txt";
	$fp = fopen($latestsearches, "r");
	$searchestmp = fread($fp, filesize($latestsearches));
	fclose($fp);
	$searches = explode("\n",$searchestmp);
	$searches = array_map("strtolower",$searches);
	//$searches = array_reverse($searches);
	foreach($searches as $i=>$searchterm) {
		$searchterm = str_replace("\n","",$searchterm);
		$searchterm = str_replace("\r","",$searchterm);
		echo "<a href='" . str_replace(" ","-",$searchterm) . ".html'>" . ucwords(str_replace("-"," ",$searchterm)) . "</a>";
		if($i!=(count($searches)-1))
			echo " - ";	
	}
}
function getlatest2() {
	$latestsearches = "latest.txt";
	$fp = fopen($latestsearches, "r");
	$searchestmp = fread($fp, filesize($latestsearches));
	fclose($fp);
	$searches = explode("\n",$searchestmp);
	$searches = array_map("strtolower",$searches);
	//$searches = array_reverse($searches);
	foreach($searches as $i=>$searchterm) {
		if(!$searchterm)
			unset($searches[$i]);
	}
	//print_r($searches);
	return $searches;
}
function updatelatest($newterm) {
	$searches = getlatest2();
	$searches[count($searches)] = strtolower($newterm);
	$searches = array_unique($searches);
	if(count($searches)>=21)
		array_shift($searches);
	$searches2 = implode("\n",$searches);
	$searches2 = str_replace("\n\n","\n",$searches2);
	//echo $searches2;
	$latestsearches = "latest.txt";
	$fp2 = fopen($latestsearches, "w");
	fwrite($fp2, $searches2);
	fclose($fp2);
}
?>
Anonymní
Profil *
Daj na formular maxlength a nezapise sa viac ako ces
Joker
Profil
pavel44
Vezmete vstupní text a pomocí funkce substr ho prostě oříznete na daný počet znaků, viz http://cz.php.net/substr

Pozor, mohou tam vznikat záludnosti s tím, že v některých případech není možné text prostě useknout kdekoliv (například XML/HTML kód se značkami se takhle zpracovává dost blbě, u HTML kódu bez značek je potřeba si dát pozor na useknutí uprostřed HTML entity).
Joker
Profil
Anonymní
Daj na formular maxlength a nezapise sa viac ako ces
To je poměrně naivní ochrana.
pavel44
Profil *
Anonymní
Ano maximální délku textu zadávaného do formuláře jsem nastavil, ale já potřebuji jak napsal Joker (díky) zaseknout nebo nezapsat (ideální), protože mě kdosi porád iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii... tak že davá www.mujweb.cz/iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii.html . Takže potřebuji nastavit max text 35 znaků přímo z tomto souboru. Zatím na funkci substr nemůžu dojít. Budu rát když někdo napíše kousek kodu jak by to mělo být.
DJ Miky
Profil
if(strlen($RETEZEC)<35) {
 // kratší než 35 znaků, uložení atd.
}
else {
 // delší než 35 znaků, hláška atd.
}
pavel44
Profil *
Nefunguje nic, asi to dávam nějak špatně :-( .
peta
Profil
'protože mě kdosi porád iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii'
co to znamena? text dava iii?
pak je pomoc snadna
$str = ereg_replace(/(.){3,}/,'\\1\\1\\1',$str);
by se dalo najit neco podobne.
Myslel jsem to tak, ze pokud se libovolny znak opakuje 3x a vic, tak ho nahradi 3mi.
A pokud bych to tam nemel davat vubec, tak
$str1 = ereg_replace(/(.){3,}/,'\\1\\1\\1',$str);
if (strlen($str1)!=strlen($str)) {$str = '';}

http://cz.php.net/ereg_replace
http://www.visibone.com/regular-expressions/

a jestli ti tam nekdo spamuje, tak mu zablokuj ip. V tomhle ohledu zadne slitovani. Jestli to dela robot, tak se da pouzit javascriptova ochrana jako je tady na foru.

'Zatím na funkci substr nemůžu dojít'
http://cz.php.net/substr
Pokud ti nekdo da odkaz bylo by dobre se na nej aspon podivat, napriklad dole je i more prikladu.
Je to tam krasne vysvetleno. Ja vim, schazi tam komixove vydani.
peta
Profil
pavel44
jeste mne napadlo, co kdybys dal odkaz na zdroj?
odkaz.txt
odkaz.php
Napadlo mne totiz, ze co tam ty davas? Tady ti davame naznaky reseni ne zpusob, jak to jen zkopirovat na nahodile misto do kodu a doufat, ze to pobezi samo od sebe. I taci tu chodi s dotazy. Jestli nejses jako oni.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0