Връщане в задната страница и нов таб

Silverlight

Registered
PHP:
<?php
ob_start();
include "conf.php";
$id=(int)$_GET['id'];
$update=mysql_query("UPDATE music SET download=download+1 WHERE id='$id'");
$select=mysql_fetch_array(mysql_query("SELECT link FROM music WHERE id='$id'"));
$link=$select['link'];
if($update){
echo "<script type='text/javascript' language='Javascript'>window.open('$link');</script>";
header ("Location: music.php?id=$id");
}
?>

Това е скрипта от download.php искам, когато се натисне да отваря нов таб и да прехвърля в предната страница където се намира линка. Пробвах се хедъра, но този път пък не ми отваря таб. :cry:
 
При начинаещите с php/js комбинацията от двата езика е малко объркваща. Това, което правиш ти:

PHP:
if($update){
    echo "<script type='text/javascript' language='Javascript'>window.open('$link');</script>";
    header ("Location: music.php?id=$id");
}

Не работи. А ще разбереш защо като прочетеш как изглеждат http заявките. Може би това ще ти свърши работа - http://www-uxsup.csx.cam.ac.uk/~jw35/courses/apache/html/x247.htm

HTTP отговорът, който сървърът връща при изпълнението на който и да е скрипт изглежда по сходен начин. Примера го взимам от горния линк:

Код:
HTTP/1.x 200 OK
Date: Wed, 21 Feb 2007 17:53:35 GMT
Server: Apache/2.2.3 (Linux/SUSE)
Last-Modified: Wed, 21 Feb 2007 17:53:33 GMT
Etag: "1c0e43-132-3caa4140"
Accept-Ranges: bytes
Content-Length: 306
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html

Някакъв текст - html, plain text, картинка, ...

Първата част са хедърите - от http 200 ok то content type включително. Два символа за нов ред указват края на хедърите и началото на съдържанието.

За да зададеш хедър в php се ползва header();. Когато сложиш echo "string"; php автоматично "затваря" хедърите и пише по съдържанието. Затова когато имаш

PHP:
echo "text";
header('Location: /index.php');

Дава грешка (или warning беше?) "headers already sent".
Защото когато принтнеш нещо в съдържанието, хедърите вече са зададени.

За да решиш проблема си, просто не ползвай header(), а сложи редиректването в javascript-a:

PHP:
<?php if($update){ ?>
<script>
window.open('каквото там имаш');
window.location = "music.php?id=<?=(int) $id?>";
</sciprt>
<?php } ?>
 

Back
Горе