Temos pavadinimas: WordPress, Shopify ir PHPFusion programuotojų bendruomenė :: Kaip neleisti rasyti zenklu i prisijungima?

Parašė scdogas321· 2012 Lap. 28 23:11:40
#1

Sveiki taigi žinau tokį dalyką:


 
 
$yummy   = array("!");
echo str_replace($yummy,'0',$_POST['aa']);
 
echo "
<form action='pamoka.php' method='post'>
<textarea name='aa'></textarea>
<br />
<input type='submit' name='afa' value='Siusti'>
</form>";
 
 


Man jis pakeičia "!" į 0. Jei būna "Labas!" pakeičia į - "Labas0".

Kaip man padaryti kad jeigu, bet kur, bet kokioje vietoje tarp raidžiu bus ženklai kaip: @ # $ %. paspaudus login išmestų pvz: echo "Varde gali būti tik [A-Z, a-z. 0-9]";

Iš anksto ačiū :)

Parašė cizas22· 2012 Lap. 29 00:11:11
#2

str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )
Tai reiškia, kad str_replace(suranda,pakeicia,tekstas)
Tavo kode yra tai, kad suranda !, pakeičia jį į 0.

Geriau naudok, preg_match http://php.net/manual/en/functio...-match.php

Parašė Daslee· 2012 Lap. 29 01:11:20
#3


function turiZenklu($txt){
		$zenklai = array('!', '@', '#', '$', '%', '^', '&', '*');
		for($i=0; $i<count($zenklai); $i++){
			if(strpos($txt, $zenklai[$i])){
				return true;
			}
		}
		return false;
	}


Pvz.:

$textas = "Labas!*";
$textas2 = "Labas";


function turiZenklu($txt){
		$zenklai = array('!', '@', '#', '$', '%', '^', '&', '*');
		for($i=0; $i<count($zenklai); $i++){
			if(strpos($txt, $zenklai[$i])){
				return true;
			}
		}
		return false;
	}


if(turiZenklu($textas) !== false){
echo "\$textas turi zenklu";
}else{
echo "\$textas neturi zenklu";
}
echo "<br>";
if(turiZenklu($textas2) !== false){
echo "\$textas2 turi zenklu";
}else{
echo "\$textas2 neturi zenklu";
}

Redagavo Daslee· 2012 Lap. 29 01:11:23

Parašė scdogas321· 2012 Lap. 29 09:11:21
#4

Aciu Daslee tavo kodas puikiai veikia su kintamaisiai bet kai bandau padaryti su

if(turiZenklu($_POST['aa']) !== false)
Man tiesiog rodo text area, mygtuka. kai parasau tarkim !a, raso kad neturi zenklu, o jei a! turi zenklus. kame beda? galiu rasyt - ! raso neturi zenklu o jei rasau !! - raso turi zenklu.

As tuos $text istrynes.

Redagavo scdogas321· 2012 Lap. 29 10:11:02

Parašė Daslee· 2012 Lap. 29 12:11:39
#5

Aha, pats pabandžiau ir tą pati pastebėjau. Pakeisk turiZenklu funkcijoje eilutes:

if(strpos($txt, $zenklai[$i])){ i: if(strpos($txt, $zenklai[$i]) !== false){

Man šitas dalykas padėjo. :)

Redagavo Daslee· 2012 Lap. 29 12:11:29

Parašė scdogas321· 2012 Lap. 29 14:11:55
#6

ZIAURIAI DEkUI :). JEI GALECIAU ISBUCIUOCIAU :D. Pameginsiu gal iseis i array idet "" kad negaletu space det arba tuscio lango palikt (del tuscio lango kalbu apie foruma :)). DAR KARTA DEKUI! :o :) ;)

Redagavo scdogas321· 2012 Lap. 29 14:11:32

Parašė Daslee· 2012 Lap. 29 15:11:09
#7


function tinkamasTekstas($txt){
		if($txt == "" || $txt == " ") return false; //Tekstas tuscias, tai netinkamas
		$zenklai = array('!', '@', '#', '$', '%', '^', '&', '*', ' ');
		for($i=0; $i<count($zenklai); $i++){
			if(strpos($txt, $zenklai[$i]) !== false){
				return false; //Tekste yra neleistinu zenklu, tai netinkamas
			}
		}
		return true; //Tekstas tinkamas
	}


Neleidžia nėi tuščio teksto, nei su tarpais tekste. :D Dėl tarpo tai tik šita pridėt reikia: , ' ' į $zenklai array. O dėl tuščio teksto, tai šitas: if($txt == "" || $txt == " ")

Redagavo Daslee· 2012 Lap. 29 15:11:24

Parašė scdogas321· 2012 Lap. 29 20:11:13
#8

Tiesiog negaliu apsakyt zodziais kaip as tave myliu :]

Parašė maxas66· 2012 Lap. 30 16:11:11
#9


 
function alphaCheck($text) {
	if(preg_match("#^([A-Za-z0-9]+)$#", $text))
		return true;
 
	return false;
}
 


greitai parašiau, turi padėti :)

@Daslee: pamiršai, kad specialieji simboliai yra gana platesnis terminas, negu --> array('!', '@', '#', '$', '%', '^', '&', '*', ' ');