Apache and PHP Server Session not working

Това е един прост трик, който задължително трябва да знаете, ако ви се прецакват PHP-сесиите на локалния компютър. При мен се получи при 2 различни версии на XAMPP. Задължително тествайте сайта, като в адресната лента не пишете “localhost” или “127.0.0.1”, а пишете iP-то, което имате в мрежата ви.
Това може да се види, като се изкара един промпт и в него пишете:

ipconfig /all

… или командата “ifconfig”, ако ползвате Linux.

Share and Enjoy !

Shares

PHP image change order – смяна на подредбата на картинки

Искаше ми се да подобря някои галерии които съм правил за разни сайтове. Не знам как до сега не съм се сетил да вкарам нещо толкова полезно и толкова дребно, като кодиране, като смяната на подредбата или последователността (change order).
PHP picture change order
Ще покжа прост пример, като ще използвам обикновена текстова база данни със следното съдържание:

a=>edno
b=>dve
c=>tri
d=>chetiri
e=>pet

И php скрипта:

<?php
$act = $_GET['act'];
$id = $_GET['id'];
 
$x=0;
 
if( isset($act) && ($act == 'up' || $act == 'down')){
	$arf = file("db.txt");
	foreach($arf as $line){
		list($k, $v) = preg_split('/=>/', rtrim($line));
		$input[$k] = $v;
		if($k == $id){
			$xp = $x;
		}
		$x++;
	}
	$inkey = array_keys($input);
	$inval = array_values($input);
	if($act == 'up'){
		$prevord = array_slice($inval, $xp-1, 1);
		$previd = array_slice($inkey, $xp-1, 1);
		$curord = array_slice($inval, $xp, 1);
 
		$prevord = $prevord[0];
		$previd = $previd[0];
		$curord = $curord[0];
		$curid = $id;
 
		$input[$previd] = $curord;
		$input[$curid] = $prevord;
 
		foreach ($input as $key => $val){
			$write .= $key."=>".$val."\r\n";
		}
		file_put_contents("db.txt", $write);
		header("Location:sortar.php");
		exit;
	} else {
		$nextord = array_slice($inval, $xp+1, 1);
		$nextid = array_slice($inkey, $xp+1, 1);
		$curord = array_slice($inval, $xp, 1);
 
		$nextord = $nextord[0];
		$nextid = $nextid[0];
		$curord = $curord[0];
		$curid = $id; // c
 
		$input[$nextid] = $curord;
		$input[$curid] = $nextord;
 
		foreach ($input as $key => $val){
			$write .= $key."=>".$val."\r\n";
		}
		file_put_contents("db.txt", $write);
		header("Location:sortar.php");
		exit;
	}
}
 
 
 
 
$arf = file("db.txt");
foreach($arf as $line){
	list($k, $v) = preg_split('/=>/', rtrim($line));
	$input[$k] = $v;
}
 
$inkey = array_keys($input);
$inval = array_values($input);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<style type="text/css">
body {background: #ededed;}
table {border-collapse:separate; border-spacing:5px; }
table tr td {border: 1px solid #fff;}
table tr td:first-child {background: #ddd;}
table tr td:first-child a {text-decoration: none; color: blue; font-weight: bold; font-size: 24px;}
</style>
</head>
 
<body>
	<table>
	<?php
	for($x=0; $x<count($inval);$x++){ ?>
		<tr>
		<?php if($x==0){ ?>
			<td><a href="sortar.php?act=down&id=<?php echo $inkey[$x]; ?>" >\/</a></td>
			<td><img src="img/<?php echo $inval[$x]; ?>.jpg"></td><td><?php echo $inkey[$x]; ?></td>
		<?php } elseif($x==(count($inval)-1)){ ?>
			<td><a href="sortar.php?act=up&id=<?php echo $inkey[$x]; ?>" >/\</a></td>
			<td><img src="img/<?php echo $inval[$x]; ?>.jpg"></td><td><?php echo $inkey[$x]; ?></td>
		<?php } else { ?>
			<td><a href="sortar.php?act=up&id=<?php echo $inkey[$x]; ?>" >/\</a>
			<a href="sortar.php?act=down&id=<?php echo $inkey[$x]; ?>" >\/</a></td>
			<td><img src="img/<?php echo $inval[$x]; ?>.jpg"></td><td><?php echo $inkey[$x]; ?></td>
		<?php } ?>
		</tr> <?php
	}?>
	</table>	
</body>
</html>

Демо може да се види тук: PHP change order images

Share and Enjoy !

Shares

PHP XPath command line graber – for Windows and Linux

Написах скромно скриптче на PHP за прилагане на XPath изрази през командния ред. Скрипта изисква инсталиран Lynx или, ако се ползва под Windows трябва да се постави Lynx в същата директория. Готиното на това програмче е, че не се интересува дали има грешки в страницата.

<?php
if ($argc != 3 || in_array($argv[1], array('--help', '-help', '-h', '-?'))) {
?>
 
This is a XPath extractor.
 
  REQUIRES:
  "lynx" to be installed!
 
  USAGE:
  <?php echo $argv[0]; ?> <site> <xpath>
 
  EXAMPLE:
  <?php echo $argv[0]; ?> http://site.com/some_page.html "//a[contains(@href,\"?rec\") and not(contains(@href,\"comment\"))]/@href"
  --------------------
 
  With the --help, -help, -h,
  or -? options, you can get this help.
 
<?php
} else {
$site=$argv[1];
function get_cont($url){
$c = `lynx -source $url`;
return $c;
}
$html = get_cont($site);
$dom = new DOMDocument();
@$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$hrefs = $xpath->evaluate($argv[2]);
for ($i = 0; $i < $hrefs->length; $i++) {
	$bb = $hrefs->item($i)->nodeValue;
	print "$bb\n";
}
}
?>

Начин на употреба:

php xpath.php site.com/some_page.html "//a[contains(@href,\"?rec\") and not(contains(@href,\"comment\"))]/@href"

Остава да успея и да го компилирам :). За сега съм пробвал с Bambalam compiler, Roadsend, phc и още няколко по-незнайни емдера и компилатора, но … дърво от всякъде. Все пак, ако си имате инсталиран php и Lynx си работи идеално.
Lynx за Winblowz може да се ползва от тук: Lynx for Windows
Причината да използвам конзолния браузер Lynx е, че много сайтове използват gzip компресия на страниците, за да се зареждат по-бързо. Така не ми се налага да правя еквилибристики от сорта на:

wget -O - somesite.com | gunzip -c

Share and Enjoy !

Shares