Käytän <form>:a Usr/psswrd tarkistukseen MySQL-tietokannasta. Tarkistuksen jälkeen käyttäjän pitäisi siirtyä automaattisesti "uudelle.php" sivulle. Olen aloittelija ja tuntemani < a href, fopen, header(location..., exit() eivät toimi tässä tarkoituksessa, Mikä on oikea ratkaisu ?
Öö, miksei header("Location: moi"); ei toimi?
"header" sivun alussa toimii kyllä. Ongelma on tietokantakyselyn ja tarkistuksen jälkeen jolloin oikeilla
arvoilla pitäisi automaattisesti siirtyä uudelle sivulle ja lomakkeen action="<?=$PHP_SELF?>" on jo käytössä.
Voithan laittaa headerin sinne tarkistuksen jälkeen. Tai sitten tehdä tarkistuksen vasta siellä kohdetiedostossa ja laittaa sen tiedoston nimen formiin actioniksi.
Tuo jälkimäinen( tarkistus kohdetiedostossa ) toimii ihan hyvin - kiitos. Edelleenkin jää arvoitukseksi se miksei header toimi(nut) keskellä php-koodia, mutta toimi sivun alussa, siellä missä muutkin headerit ovat.
Puuttui ob_start() ja ob_end_flush()-funktiot?
Felix kirjoitti:
Tuo jälkimäinen( tarkistus kohdetiedostossa ) toimii ihan hyvin - kiitos. Edelleenkin jää arvoitukseksi se miksei header toimi(nut) keskellä php-koodia, mutta toimi sivun alussa, siellä missä muutkin headerit ovat.
No miksei sitä tarkistusta voi tehdä sinne sivun alkuun?
Ja tuohon, miksi header-käsky ei toimi, löytyy vastaus esimerkiksi php:n manuaalista. Ja samasta paikasta löytyy ohjeet myös em. output buffering -funktioiden käyttöön.
Headerit pitää lähettää ennen kuin mitään tekstiä on lähetetty selaimelle. Tästä syystä ne eivät välttämättä toimi sivun keskellä.
Felix kirjoitti:
Edelleenkin jää arvoitukseksi se miksei header toimi(nut) keskellä php-koodia, mutta toimi sivun alussa, siellä missä muutkin headerit ovat.
Käyttämällä ob_start() ja ob_end_flush() funktioita selviät tästäkin. Laita ob_start() ihan ensimmäiseksi riviksi ja ob_end_flush() taas viimeiseksi tai header() funktion kutsua seuraavaksi riviksi.
https://www.ohjelmointiputka.net/koodivinkit/
Aihe on jo aika vanha, joten et voi enää vastata siihen.