Blodhemn Skrevet 12. mars 2004 Del Skrevet 12. mars 2004 (endret) Hei, Jeg har et aldri så lite problem. Jeg validerer et skjema med php_self i action attributtet på skjemaet. Slik at det kan kjøres gjennom til det validerer. Problemet er når jeg vil bryte ut av dette. Jeg behandler nemlig variablene i en egen side som sender deg videre med en header slik at jeg unngår at en oppdatering sender ting inn i databasen på ny. Akkurat nå så har jeg et hidden form som ser mer ut som en kvittering av et slag Denne vises når skjemaet er godkjent og gjør at brukeren kan sende det skjulte skjemaet til behandling siden. Jeg vil egentlig ikke ha det sånn, jeg vil at den sender variablene til behandling-siden så fort det validerer, uten å måtte bruke det skjulte skjemaet. Siden der valideringa skjer er inkludert i et design. Håper på litt hjelp Mvh. Arild Gustavsen Endret 12. mars 2004 av Blodhemn Lenke til kommentar
The Red Devil Skrevet 12. mars 2004 Del Skrevet 12. mars 2004 Eg forstår egentleg ikkje problemstillingen. Du vil at når brukeren klikker submit så blir han sendt over til ein egen validerings side ? eller ? Vist, så, bare sett form action til den nye siden. og eventuelt redirect brukeren tilbake med ein error melding vist den ikkje er rett utfylt. Lenke til kommentar
Blodhemn Skrevet 12. mars 2004 Forfatter Del Skrevet 12. mars 2004 (endret) Eg forstår egentleg ikkje problemstillingen. Du vil at når brukeren klikker submit så blir han sendt over til ein egen validerings side ? eller ? Vist, så, bare sett form action til den nye siden. og eventuelt redirect brukeren tilbake med ein error melding vist den ikkje er rett utfylt. Kan ikke sette form action attributtet til den nye siden da jeg må ha php_self for å sørge at den cycler gjennom valideringa til den godkjenner. Siden man først fyller inn skjemaet og der den validerer er den samme. Problemet mitt er å bryte ut av det uten å vise brukeren enda et skjema han/hun må trykke ok på for å få sendt videre. Jeg vil sende skjemaet til behandling så raskt skjemaet validerer. Ikke via det skjulte skjemaet. Om jeg skal redirecte som du foreslår. Hvordan gjøres dette for å beholde feltene innfylte og uten javascript? Helst også uten å vise noe i URL. Jeg poster med koden så dere kan se det. <?php // Innhenting av variabler $brukernavn = $_POST["brukernavn"]; $passord = $_POST["passord"]; $passord2 = $_POST["passord2"]; $epost = $_POST["epost"]; $fornavn = $_POST["fornavn"]; $etternavn = $_POST["etternavn"]; $submit = $_POST["submit"]; // Strip whitespace fra begynnelse og slutt. $brukernavn = trim($brukernavn); $passord = trim($passord); $passord2 = trim($passord2); $epost = trim($epost); $fornavn = trim($fornavn); $etternavn = trim($etternavn); $fornavn = ucfirst($fornavn); $etternavn = ucfirst($etternavn); if ( !empty($submit) ) { $ok = "ja"; if (strlen($brukernavn) < 6) { $ok = null; } if (strlen($passord) < 6) { $ok = null; } if ($passord != $passord2) { $ok = null; } if ( empty($fornavn) ) { $ok = null; } if ( empty($etternavn) ) { $ok = null; } if ( empty($epost) ) { $ok = null; } } if ( $ok == "ja" ) { echo "Brukernavn: $brukernavn<br>"; echo "Navn: $fornavn $etternavn<br>"; echo "Passord: $passord<br>"; echo "E-post adresse: $epost"; echo "<p>Om dette er korrekt vennligst klikk \"Godkjenn\"</p>"; echo '<form action="brukere/brukere_behandling.php" method="post">'; echo '<input type="hidden" name="brukernavn" value="' . $brukernavn. '">'; echo '<input type="hidden" name="passord" value="' . $passord . '">'; echo '<input type="hidden" name="fornavn" value="' . $fornavn . '">'; echo '<input type="hidden" name="etternavn" value="' . $etternavn . '">'; echo '<input type="hidden" name="epost" value="' . $epost . '">'; echo '<input type="submit" name="submit" value="Godkjenn">'; echo '</form>'; } if ( !empty($submit) && empty($ok) ) { ?> <h1>Registrering av nye brukere</h1> <p>Vennligst skriv fornavn og etternavn så riktig som mulig. Navnet vil dukke opp om du legger til noe i aktiviteter.<br>Man bør også legge merke til at brukernavn og passord er casesensitive. Dvs at brukernavnet "root" ikke er det samme som "Root". Store og små bokstaver er forskjellige.</p> <form name="brukere" method="post" action="<?php $_SERVER["PHP_SELF"] ?>"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="165">Brukernavn:</td> <td> <input name="brukernavn" type="text" id="brukernavn" size="30" value="<?php echo "$brukernavn"; ?>" maxlength="20"> <?php if ( strlen($brukernavn) < 6 ) { echo "<font color=red>* Brukernavn må være minst 6 tegn</font>"; }?> </td> </tr> <tr> <td>Fornavn:</td> <td> <input name="fornavn" type="text" id="fornavn" size="30" value="<?php echo "$fornavn"; ?>" maxlength="40"> <?php if ( empty ($fornavn) ) { echo "<font color=red>* Du må fylle inn fornavn</font>"; } ?> </td> </tr> <tr> <td>Etternavn:</td> <td> <input name="etternavn" type="text" id="etternavn" size="30" value="<?php echo "$etternavn"; ?>" maxlength="40"> <?php if ( empty ($etternavn) ) { echo "<font color=red>* Du må fylle inn etternavn</font>"; } ?> </td> </tr> <tr> <td>Passord:</td> <td><input name="passord" type="password" id="passord" size="16" value="<?php echo "$passord"; ?>" maxlength="16"> <?php if ( strlen($passord) < 6 ) { echo "<font color=red>* Passordet må være på minst 6 tegn</font> "; } ?> </td> </tr> <tr> <td>Gjenta Passord:</td> <td><input name="passord2" type="password" id="passord2" size="16" value="<?php echo "$passord2"; ?>" maxlength="16"> <?php if ( strlen($passord2) < 6 ) { echo "<font color=red>* Passordet må være på minst 6 tegn</font> "; } else { if ( $passord != $passord2 ) { echo "<font color=red>* Passordene du tastet inn var ikke like</font>"; } } ?> </td> </tr> <tr> <td>E-post adresse:</td> <td><input name="epost" type="text" id="epost" size="30" value="<?php echo "$epost"; ?>"maxlength="64"> <?php if ( empty ($epost) ) { echo "<font color=red>* Du må fylle inn en epostadresse</font>"; } ?> </td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td> </td> <td><input name="submit" type="submit" value="Legg Til Bruker"></td> </tr> </table> </form> <?php } // Dette intreffer om skjemaet ikke er fyllt inn og sendt. Dette vil være hva en bruker ser om de åpner siden ferskt. if ( empty($submit) ) { ?> <h1>Registrering av nye brukere</h1> <p>Vennligst skriv fornavn og etternavn så riktig som mulig. Navnet vil dukke opp om du legger til noe i aktiviteter.<br>Man bør også legge merke til at brukernavn og passord er casesensitive. Dvs at brukernavnet "root" ikke er det samme som "Root". Store og små bokstaver er forskjellige.</p> <form name="brukere" method="post" action="<?php $_SERVER["PHP_SELF"] ?>"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="165">Brukernavn:</td> <td> <input name="brukernavn" type="text" id="brukernavn" size="30" maxlength="20"> </td> </tr> <tr> <td>Fornavn:</td> <td> <input name="fornavn" type="text" id="fornavn" size="30" maxlength="40"> </td> </tr> <tr> <td>Etternavn:</td> <td> <input name="etternavn" type="text" id="etternavn" size="30" maxlength="40"> </td> </tr> <tr> <td>Passord:</td> <td><input name="passord" type="password" id="passord" size="16" maxlength="16"></td> </tr> <tr> <td>Gjenta Passord:</td> <td><input name="passord2" type="password" id="passord2" size="16" maxlength="16"> </td> </tr> <tr> <td>E-post adresse:</td> <td><input name="epost" type="text" id="epost" size="30" maxlength="64"> </td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td> </td> <td><input name="submit" type="submit" value="Legg Til Bruker"></td> </tr> </table> </form> <?php } ?> Endret 12. mars 2004 av Blodhemn Lenke til kommentar
Torbjørn Skrevet 12. mars 2004 Del Skrevet 12. mars 2004 kan dui kke bare lage en form_validator.php som du inkluderer øverst på hver side? så blir den kjørt i alle filer som får form data Lenke til kommentar
Blodhemn Skrevet 12. mars 2004 Forfatter Del Skrevet 12. mars 2004 (endret) kan dui kke bare lage en form_validator.php som du inkluderer øverst på hver side? så blir den kjørt i alle filer som får form data Ikke helt sikker på om jeg skjønner hva du mener her. Problemet et vel mer at jeg vil at brukeren skal se hva som er feil utfylt fortløpende. Endret 12. mars 2004 av Blodhemn Lenke til kommentar
Blodhemn Skrevet 12. mars 2004 Forfatter Del Skrevet 12. mars 2004 (endret) Hmm, ja og på toppen av dette har jeg problemer med at magic_quotes_gpc() = on Endret 12. mars 2004 av Blodhemn Lenke til kommentar
Blodhemn Skrevet 13. mars 2004 Forfatter Del Skrevet 13. mars 2004 (endret) Fikk løst magic quotes problemet i allefall. Men etterlyser fremdeles praktiske løsninger på det opprinnelige problemet mitt Jeg innbiller meg jo at slike typer valideringer er mulig, men vet tydeligvis ikke helt hvordan det gjennomføres Endret 13. mars 2004 av Blodhemn Lenke til kommentar
The Red Devil Skrevet 14. mars 2004 Del Skrevet 14. mars 2004 Bruk php_self til å sende formen til samme side, deretter sjekk at alt er rett, vist alt er rett enten, send det vider til neste side med sessions eller serial url variablene. (header("Location: adresse") Eller du lagrer informasjonen etter at alt er validert, og deretter redirecter brukeren. Eg pleier å bruke den siste sjølv. Lenke til kommentar
Blodhemn Skrevet 14. mars 2004 Forfatter Del Skrevet 14. mars 2004 Bruk php_self til å sende formen til samme side, deretter sjekk at alt er rett, vist alt er rett enten, send det vider til neste side med sessions eller serial url variablene. (header("Location: adresse")Eller du lagrer informasjonen etter at alt er validert, og deretter redirecter brukeren. Eg pleier å bruke den siste sjølv. Høres jo ut som greie løsninger det, men litt av problemet mitt er jo at jeg har selve siden med form og validering inkludert i et design, så headere blir sendt før sida med valideringa får tid til å laste. Da må jeg i såfall legge valideringa til en fil jeg inkluderer i toppen av index.php .... og der skjønte jeg hva torbjørn mente ja.. hehe.. Har jeg forstått det rett at PHP kjører scriptet fra topp til bånn, så variabler du bruker må settes før du bruker dem?. Så jeg kan ikke bare ta en sjekk på om $ok, variablen jeg bruker for å validere skjemaet, er tom eller ei og så sende header om den ikke er? Fordi $ok variablen blir jo satt lenge etter output. Lenke til kommentar
The Red Devil Skrevet 15. mars 2004 Del Skrevet 15. mars 2004 Heile websiden din er parset når du får den, det betyr at all variabler er satt osv. Bare legg til validerings file på toppen av dokumentet, deretter kjør testene dine. Husk å bruk $_POST['variablenavn'] For at scriptet skal vite når du har sent over informasjon til validering, lag ein "if(isset($_POST['submit']))" som resten av coden ligger under. variablen submit er submit knappen. Husk å ha "name=submit" på den. Det er igrunnen alt, blei litt rotite men eg håper du forstår kva eg meiner. Vist du vil kan eg sende eit kode eksempel i ein pm til deg. Lenke til kommentar
Blodhemn Skrevet 15. mars 2004 Forfatter Del Skrevet 15. mars 2004 Neida det går fint.. hvis du tar en titt på koden jeg limte inn noen poster over så ser du at det omtrent samme sjekkene jeg bruker.. i prinsippet ville jo da bare bli å flytte selve valideringa inn i en include fil Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå