Just nu i M3-nätverket
Gå till innehåll

Alertbox (Javascript) i PHP


Jalet

Rekommendera Poster

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

 

Länk till kommentar
Dela på andra webbplatser

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]

Länk till kommentar
Dela på andra webbplatser

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.

 

Länk till kommentar
Dela på andra webbplatser

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?

 

Länk till kommentar
Dela på andra webbplatser

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]

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...