Jump to content
php.lv forumi

array


eregi

Recommended Posts

man vajadzētu ar array palīdzību padot kādu vērtību, ja rezultāts ir numerāls, piem -

	
$dara = Array (
'video' => Array (
				is_numeric => 'ir numeraals',
));
echo $dara[video][12];

 

doma tāda, ka es padodu caur $dara divas vērtības 1) 'video' 2) kaut kādu skaitli un vajag tā, ja pirmā vērtība ir video, bet otrā ir skaitliska, tad atgriezt 'ir numeraals', vnk īsti nezinu ar, ko iekš array varētu noteikt, vai ir skaitliska vērtība. Ceru, ka tagad saprati, man te vnk sākumā sanāca samuhņīt kko netā. (:

Edited by eregi
Link to comment
Share on other sites

vēlējos pēc parauga uzmočīt, ko katrs dara webā

$PAGES = array (
 'news.php' => 'lasa ziņas',
 'archive.php' => 'skatās arhīvu' );

 

bet gadās, kad vie adrese ir piem /video/22 tad es vēlējos pēc šī parauga uztaisīt tā, ja tā otrā vērtība (22) ir skaitliska tad atgriez 'ir skaitlisks', bet laikam nāksies iztikt ar ifiem....

Link to comment
Share on other sites

Imho, pēc viņa pirmā posta un tālākā parauga ar friendly urls viņš domā šādi:

 

$data= explode("/", $url); //$url mainigais, kur tev glabajās apstrādāts $_SERVER['QUERY_STRING']
if(in_array($data[0],$pages) && is_numeric($data[1])) //uzreiz paņemam vērtības no masīva
{
echo 'ir skaitlis'; 
}

Manuprat kaut kā neloģiski, es šādā gadijumā rīkotos šādi:

$pages = array('video','archive');
if(in_array($data[0],$pages)) { include($data[0].'php'); }

//un tagad ieksh video.php 

if(isset($data[1]) && is_numeric($data[1]))
{
//izvelkam info ierakstam ar id 22
}
else
{
//defaultaa lapa, kur atrodas visu video saraksts vai errors, ka nav defineets id 
}

Link to comment
Share on other sites

Hmm, interesanti, blackhalt, šo te ir kādā veidā iespējams exploitot, vai arī tas ir vienkārši ļoti liels skaitlis citā pierakstā? Teorētiski jau pēc noteikšanais vai is_numeric sql kverijam tiek lietots real_escape_string un datubāze neatgriezīs nevienu ierakstu, jo tāds id neeksistē. Bet nu es to is_numeric izmantoju pilnīgi visos projektos pie $_GET['id'] pārbaudēm.

Link to comment
Share on other sites

tas ir decimāl[daļ]skaitļa pieraksts ar mantisu:

http://en.wikipedia.org/wiki/Significand

http://en.wikipedia.org/wiki/Scientific_notation

http://lv.php.net/manual/en/language.types.float.php

 

Bet vai Tev tiešām vajag decimāldaļskaitli, vai tomēr veselu skaitli?

es parasti daru kaut ko šādu priekš veseliem skaitļiem:

if($_GET['skaitlis']==intval($_GET['skaitlis'])){
//jā, ir korekts vesels skaitlis
}
else {
//nē, nav korekts vesels skaitlis
}

Tos id tak pats rakstīsi, tādēļ jāaizliedz pieņemt jebkāda cita formāta pieraksti.

Link to comment
Share on other sites

+0123.45e6 ir ļoti normāls skaitlis (lai gan ne integer tipa, tiesa). Pārvērsts uz integer tas būs 123450000. Tā ka ja to lietosi atlasē pēc kautkāda ID lauka, tad jau viss būs kārtībā.

Ja tiešām gribās atļaut tikai integer tipa skaitļus, tad var lietot vienkāršu regexpu - [1-9][0-9]*

 

Es vienmēr biju lietojis http://php.net/intval Tiesa, tas arī atļaus iepriekšējo skaitli, bet to gan pārvērtīs par 123. Toties outputā tā piespiedu kārtā skaitli pārvērš par integer tipa.

 

Tāpat tā is_numeric funkcija atļaujs ieejā skaitļus hex pierakstā - is_numeric("0xDEADBEEF") == true.

Link to comment
Share on other sites

×
×
  • Create New...