Gå til innhold

PHP Script - Nedlasting av fil basert på browser-id


Anbefalte innlegg

Hepp!

 

Er ganske ny på PHP-fronten og sitter og mikker på et lite script.. Scriptet er en side som gir brukeren som surfer til den en nedlastingslink. Filen som skal lastes ned varierer utifra browser-id. Jeg har en lang liste med forskjellige filer og browser-id`er, men har startet pent med et par. Problemet er at den farskern ikke funker ;).

 

----- Start Script-----

<?php

//First we put the browser version of the user into the $container variable

$container = strtolower($_SERVER["HTTP_USER_AGENT"]);

 

//Then we configure the different browser id`s

$mozilla = "mozilla";

$msie = "explorer";

$nokia6230 = "nokia6230"

 

//Check browser-id and return corect url/file

if (strstr($container,$mozilla) ?$file = "mozilla.jad";

elseif (strstr($container,$msie) ?$file = "msie.jad";

elseif (strstr($container,$nokia6230) ?$file = "nokia6230.jad";

echo "<a href='http://www.yourpage.com/test/"$file"'>1- Download Software</a><br>";

?>

-----End Script------

 

Jeg ønsker å søke igjennom hele stringen $container og se om et av ordene matcher, slik at brukeren får tildelt korrekt url, men når jeg prøver å gå til siden er den helt blank.. Regner med at det er en (eller flere) teit(e) nybegynnerfeil jeg har gjort her..

 

Noen tips ? :)

Endret av Steelbelted
Lenke til kommentar
Videoannonse
Annonse

Legg til

error_reporting(E_ALL | E_NOTICE);
ini_set('display_errors', '1');

 

EDIT: Den koden har mange syntaktiske feil, blant annet så mangler du flere ; og ikke like mange ( som ).

C:\Users\BTH>php tmp.php

Parse error: syntax error, unexpected T_IF in C:\Users\BTH\tmp.php on line 11

Endret av itsmebth
Lenke til kommentar
Legg til
error_reporting(E_ALL | E_NOTICE);
ini_set('display_errors', '1');

 

 

Takker for ekstremt raskt svar! :o)

Jeg la til disse linjene slik at koden nå er:

 

 
<?php
//First we put the browser version of the user into the $container variable
$container = strtolower($_SERVER["HTTP_USER_AGENT"]);

//Then we configure the different browser id`s
$mozilla = "mozilla";
$msie = "explorer";
$nokia6230 = "nokia6230"

//Check browser-id and return corect url/file
if (strstr($container,$mozilla) ?$file = "mozilla.jad";
elseif (strstr($container,$msie) ?$file = "msie.jad";
elseif (strstr($container,$nokia6230) ?$file = "nokia6230.jad";
echo "<a href='http://www.yourpage.com/test/"$file"'>1- Download Software</a><br>";
error_reporting(E_ALL | E_NOTICE);
ini_set('display_errors', '1');
?>

 

Jeg får ingen feilmelding når jeg prøver å laste siden. Zend Studio derimot gir følgende melding på debug:

 

 

X-Powered-By: PHP/5.2.0

Content-type: text/html

 

<br />

<b>Parse error</b>: parse error, unexpected T_IF in <b>webster:/var/www/html/jotppd/index3.php</b> on line <b>11</b><br />

Lenke til kommentar
Legg det til øverst i scriptet. Eller så har du som sagt en parser-feil, og ikke noe av den koden blir kjørt.

 

Danke :).

 

Så det var endel ";" som manglet, og også noen ")" er. Ryddet litt opp her slik at scriptet nå ser slik ut:

 

-------Kode Start-------

<?php

error_reporting(E_ALL | E_NOTICE);

ini_set('display_errors', '1');

//First we put the browser version of the user into the $container variable

$container = strtolower($_SERVER["HTTP_USER_AGENT"]);

 

//Then we configure the different browser id`s

$mozilla = "mozilla";

$msie = "explorer";

$nokia6230 = "nokia6230";

 

//Check browser-id and return corect url/file

if (strstr($container,$mozilla) $file = "mozilla.jad");

elseif (strstr($container,$msie) $file = "msie.jad");

elseif (strstr($container,$nokia6230) $file = "nokia6230.jad");

echo "<a href='http://www.yourpage.com/test/" . $file . ">1- Download Software</a><br>";

?>

-------Kode Slutt-------

 

Får fortsatt ingen feilmelding når jeg går til siden (bare blank side). Zend klager fortsatt over samme feil:

 

X-Powered-By: PHP/5.2.0

Content-type: text/html

 

<br />

<b>Parse error</b>: parse error, unexpected T_VARIABLE in <b>webster:/var/www/html/jotppd/index3.php</b> on line <b>11</b><br />

 

 

Er nok noe muffens med den ekle nybegynnerkoden min ja.. ;)

Er litt usiker på bruken av if og elseif`er. Jeg ønsker å sjekke for alle variablene ( $msie , $mozilla, $nokia6230i) i $container. Hvis den ikke finner $msie ønsker jeg at den skal sjekke neste. Hvis den ikke finner noen av variablene vil jeg at den skal ha en felles "default" action for alle. Er det mulig å få til med if/elseif`er eller burde jeg kikke på noe annet ?

 

Thanks!

Lenke til kommentar

I og med at User Agent inneholder en del mer enn bare navnet på browseren er switch-case utelukket, så if/elseif r nok det beste. Syntaksen til if er

if(condition) statement

hvor statement enten kan være en enkelt ting

if($var == 'noe') $foo = 'bar';

eller en gruppe av flere

if($var == $noe){
$foo = 'bar';
echo '$foo er ' . $foo;
}

Der er altså feilen din.

 

Ellers så vil jeg anbefale og teste for MSIE før Mozilla, da jeg mener å huske at MSIE har Mozilla i User Agenten sin.

 

Håper dette hjelper :)

Endret av itsmebth
Lenke til kommentar
I og med at User Agent inneholder en del mer enn bare navnet på browseren er switch-case utelukket, så if/elseif r nok det beste. Syntaksen til if er
if(condition) statement

hvor statement enten kan være en enkelt ting

if($var == 'noe') $foo = 'bar';

eller en gruppe av flere

if($var == $noe){
$foo = 'bar';
echo '$foo er ' . $foo;
}

Der er altså feilen din.

 

Ellers så vil jeg anbefale og teste for MSIE før Mozilla, da jeg mener å huske at MSIE har Mozilla i User Agenten sin.

 

Håper dette hjelper :)

 

 

Hola! :)

 

Takker for raskt svar!

 

Sitter fortsatt og knoter litt med dette scriptet..

 

 

<?php

//First we put the browser useragent in the $useragent variable

$uag = strtolower($_SERVER["HTTP_USER_AGENT"]);

 

//Then we perform the browsercheck

if($uag == 'msie') $file = 'msie.jad';

if($uag == 'mozilla') $file = 'mozilla.jad';

echo $uag;

echo $file;

?>

 

[/code

 

Jeg får output fra $uag som er useragent variableen, men ikke $file variabelen.

Kan det være fordi useragent stringen ikke matcher 100% (kun et av ordene i stringen som matcher) ?

Lenke til kommentar

Jeg hadde skrevet et innlegg men så kom jeg til å trykke på backspace :(

 

Kortversjonen er at du har riktig i at problemet er at stringene ikke er helt like. Bruk strpos for å se om en string er inni en annen.

 

PS: Beklager at det tok så lang tid.

Endret av itsmebth
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...