私はPHPヘッダを使ってPHP-HTMLサイトを介してユーザをプッシュしますが、これをしようとすると珍しい問題が発生します。PHPヘッダが奇妙な問題をリダイレクト
コンテンツは、画面に表示がない空白、代わりに再指向URLです、しかし、URLバーには、まだ再指向する前に、古いURLを示しているようです。
なしecho "";
文、これを引き起こしている可能性がありprint_r();
文またはvar_dump();
文、また任意の野生のHTMLまたはホワイトスペースがある(私は三度チェックしました、すべてのHTMLが<<<HTML [htmlhere] HTML;
に包まれ、ホワイトスペースがされているがありません「&が置き換え検索」を使用して排除)
私はまた、無支援に私のヘッダコードの後にexit();
を使用しようとしました。私がここで愚かであれば誰でも私に知らせることができますか?
コード
<?PHP
if(!isset($_SESSION))
{
session_start();
}
function getPage($link)
{
$contents="";
$cSession=curl_init();
curl_setopt($cSession,CURLOPT_URL,$link);
curl_setopt($cSession,CURLOPT_RETURNTRANSFER,true);
curl_setopt($cSession,CURLOPT_HEADER,true);
curl_setopt($cSession,CURLOPT_FOLLOWLOCATION,false);
$contents.=curl_exec($cSession);
if(preg_match('#HTTP/1.1(.*)#',$contents,$t))
{
$code=trim($t[1]);
}
else
{
$code="";
}
if($code=="301 Moved Permanently")
{
if(preg_match('#Location:(.*)#',$contents,$r))
{
$l=trim($r[1]);
}
$contents="";
$handler=fopen($l,"r");
while(!feof($handler))
{
$contents.=fread($handler,1024);
}
fclose($handler);
}
else if($code=="200 OK")
{
$contents=curl_exec($cSession);
}
else
{
$contents="";
}
curl_close($cSession);
return $contents;
}
function checkPage($content)
{
$links=array();
$textLen=strlen($content);
if($textLen>10)
{
$startPos=0;
$valid=true;
while($valid)
{
$spos=strpos($content,'<a',$startPos);
if($spos<$startPos)
{
$valid=false;
}
else if($spos===FALSE)
{
$valid=false;
}
else
{
$spos=strpos($content,'href',$spos);
$spos=strpos($content,'"',$spos)+1;
$epos=strpos($content,'"',$spos);
$startPos=$epos;
$link=substr($content,$spos,$epos-$spos);
if(strpos($link,"http://")!==false)
{
$link=rtrim($link,'/');
$links[]=$link;
}
else if(strpos($link,"https://")!==false)
{
$link=rtrim($link,'/');
$links[]=$link;
}
}
}
}
return $links;
}
function checkArray($array,$url)
{
$new_array=array();
$update=array();
foreach($array as $child)
{
if(strpos($child,$url)===FALSE)
{
$child="";
}
else
{
if($child===$url)
{
$child="";
}
$new_array[]=$child;
}
}
$new_array=array_unique($new_array);
$new_array=array_filter($new_array);
return $new_array;
}
$v_url_to_check="";
$v_api="";
if(isset($_POST["URL"])&&isset($_POST["Feedback"]))
{
$v_url_to_check=filter_var($_POST["URL"],FILTER_SANITIZE_URL);
$v_api=filter_var($_POST["Feedback"],FILTER_SANITIZE_STRING);
}
else if(isset($_POST["URL"])&&!isset($_POST["Feedback"]))
{
$v_url_to_check=filter_var($_POST["URL"],FILTER_SANITIZE_URL);
$v_api="";
}
else
{
$_SESSION["Message"]="BadData";
header("Location:".$_SESSION['loc'],true,301);
exit;
}
if(strpos($v_url_to_check,".")===FALSE)//
{
$_SESSION["Message"]="Failed";
header("Location:".$_SESSION['loc'],true,301);
exit;
}
else
{
$a_content=checkPage(getPage($v_url_to_check));
$new_array=checkArray($a_content,$v_url_to_check);
$count=0;
foreach($new_array as $child)
{
$count++;
}
$i=0;
foreach($new_array as $childs)
{
$update["Child$i"]=$childs;
$i++;
}
if($count!=0)
{
$_SESSION["Message"]="Success";
$_SESSION["Links"]=$count;
$_SESSION["ReturnedArray"]=$update;
$_SESSION["RequestedURL"]=$v_url_to_check;
$_SESSION["FeedbackValue"]=$v_api;
header('Location:'.$_SESSION['loc'],true,301);
exit;
}
else
{
$_SESSION["Message"]="Failed";
header("Location:".$_SESSION['loc'],true,301);
exit;
}
}
?>
$_SESSION['loc']
は、メインコード(のindex.php)に設定されているものの、それは再演出で何の問題を持っていないとして、私はそれを含めていませんよ。
EDIT:header("Location: ".$_SESSION['loc'],true,301);
(コロンの後にスペースを使用しては)
それはそれではありませんでしたが、とにかく感謝します。 – Raisus