yp_cat is lacking in PHP5 - this is a suitable (slow, forking) replacement...
<?php
$handle = popen( 'ypcat passwd.byname', 'r' );
while (($line = fgets($handle, 1024)) !== FALSE) {
list($user,$pass,$uid,$gid,$gcos,$home,$shell) = explode (':', $line);
list($name,$room,$work,$home,$position) = explode (',', $gcos);
## Do Stuff ##
}
pclose( $handle );
?>
yp_cat
(PHP 4 >= 4.0.6, PHP 5 <= 5.0.5)
yp_cat — بازگرداندن آرایه شامل نقشه کامل
Description
array yp_cat
( string $domain
, string $map
)
بازگرداندن تمام ورودیهای نقشه.
Parameters
- domain
-
نام دامنه NIS.
- map
-
نقشه NIS.
Return Values
بازگرداندن آرایه شامل تمام ورودیهای نقشه، مقدارهای کلید نقشهها به عنوان اندیس و ورودیهای نقشه به عنوان داده آرایه.
Nicholas Humfrey ¶
6 years ago
Anonymous ¶
7 years ago
I hope this will userfull to somebody:
function auth_by_nis($login,$password,$nis_domain='-d xxx_nis',$nis_host='-h xxx.it')
{
$output = shell_exec("ypcat $nis_domain $nis_host passwd");
$lines=split("\n",$output);
foreach ($lines as $k=>$v)
{
list($login_nis,$pw_nis)=split(":",$v);
if ($login_nis != $login)continue;
//login trovata: ora si verifica la password
$salt=substr( $pw_nis , 0 ,2);
$pass_cript=crypt($password, $salt);
if($pass_cript == $pw_nis) return 1;
else return 0;
}
return 0;
}
smchang at math dot inha dot ac dot kr ¶
10 years ago
result browsing code
<?php
$arraylist = yp_cat($domain,"passwd.byname");
$key = array_keys($arraylist);
$count = count($key);
for ( $i = 0; $i < $count ; $i++ ) {
echo "COUNT $i -> ";
echo $arraylist[$key[$i]];
echo "<BR>\n";
}
?>
RESULT( Only First line )
COUNT 0 -> testuser:3jYXqr8fRm28M:500:500:PHP Test user:/home/testuser:/bin/csh
It, is in $key, is username(in example, testuser).
