Just nu i M3-nätverket
Jump to content

Alertbox (Javascript) i PHP


Jalet

Recommended Posts

Håller på med en inloggnings funktion till min sida, har gjort sånna förut, men nu ska jag testa att få upp en lite "alertbox" om man inte fyllt i uppgifterna rätt.

 

<?[color="#0000ff"]php[/color]
[color="#ff0000"]ob_start[/color]();
[color="#006400"]//Startar sessionen[/color]
[color="#ff0000"]session_start[/color]();
[color="#0000ff"]include[/color]("data.[color="#0000ff"]php[/color]");
[color="#006400"]// Kollar om man fyllt i uppgifterna rätt[/color]
[color="#0000ff"]if[/color](([color="#0000ff"]$[/color]_POST['user'] == $user) && ([color="#0000ff"]$[/color]_POST['pass'] == $pass))
{
[color="#0000ff"]$[/color]_SESSION['admin'] = "online";
[color="#ff0000"]header[/color]("Location: nyheter.[color="#0000ff"]php[/color]");
}
[color="#006400"]// Om man inte har det så skickas man hit[/color]
[color="#0000ff"]else[/color]
{
[color="#006400"]// Alert felmeddelande (Funkar inte)[/color]
[color="#0000ff"]echo[/color] ('<script type="text/javascript">alert("Fel användarnamn eller lösenord!");</script>');
[color="#ff0000"]header[/color]("Location: nyheter.[color="#0000ff"]php[/color]");
}
?>

 

Får inte alertboxen att funka riktigt :( Nån som ser nått fel ?

// Mvh Jocke

 

Link to comment
Share on other sites

Kolla hur den genererade HTML-koden ser ut.

 

Förövrigt kand du inte använda header() efter att du skickat utdata (med echo).

 

Ändring:

Hoppsan. Såg inte att du slår på buffring. Hsh, se Helgons svar istället.

[inlägget ändrat 2005-02-10 12:58:01 av zerblat]

Link to comment
Share on other sites

Du kör output buffering på texten, vilket resulterar i att headern "Location: nyheter.php" skickas innan den skickar ditt javascript. Alltså skickas webbläsaren vidare till nyheter.php innan den får javascriptet.

Om du vill ha en alert där så kan du skicka vidare användaren med javascript istället.

 

Javascript för att omdirigera en sida är

window.location="http://www.yourdomain.com/";

om jag inte minns helt fel.

 

Link to comment
Share on other sites

Förlåt en okunnig, men var ser du att han har output buffering? Hittar ingen kodrad som skulle indikera ngt sådant. Och för övrigt är väl buffering att föredra här, då buffering innebär att sidan i n t e skickas förrän all kod är processad?

 

Eller är det olika mellan PHP och ASP?

 

Link to comment
Share on other sites

men var ser du att han har output buffering?

Här:

[color="#ff0000"]ob_start[/color]();

 

Edit:

Att scriptet inte fungerar är självklart.

I följande kod:

[color="#0000ff"]echo[/color] ('<script type="text/javascript">alert("Fel användarnamn eller lösenord!");</script>');
[color="#ff0000"]header[/color]("Location: nyheter.[color="#0000ff"]php[/color]");

 

Skickar man ett <script>...</script> till browsern (helt felaktigt eftersom man inte ens talat om att det är html men det spelar ingen roll), därefter skickar man "Location" som instruerar browsern att ge fasen i allt som kommer på sidan och istället surfa till nyheter.php.

 

Att scriptet inte körs beror helt enkelt på att Jalet instruerar browsern att inte köra scriptet när han skickar vidare användaren med en HTTP-header (och tillhörande statuskod). Det blir samma resultat oavsett om man kodar php, asp, perl eller vad som helst. Det är en funktion i http-protokollet.

 

[inlägget ändrat 2005-02-10 14:36:43 av fhe]

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...