nepz Skrevet 8. november 2012 Del Skrevet 8. november 2012 Warning: fopen(text.txt) [function.fopen]: failed to open stream: Permission denied in /Applications/XAMPP/xamppfiles/htdocs/PhpProject1/skjema2.php on line 10 Warning: fwrite() expects parameter 1 to be resource, boolean given in /Applications/XAMPP/xamppfiles/htdocs/PhpProject1/skjema2.php on line 11 Warning: fwrite() expects parameter 1 to be resource, boolean given in /Applications/XAMPP/xamppfiles/htdocs/PhpProject1/skjema2.php on line 12 Warning: fwrite() expects parameter 1 to be resource, boolean given in /Applications/XAMPP/xamppfiles/htdocs/PhpProject1/skjema2.php on line 13 Warning: fwrite() expects parameter 1 to be resource, boolean given in /Applications/XAMPP/xamppfiles/htdocs/PhpProject1/skjema2.php on line 14 Warning: fwrite() expects parameter 1 to be resource, boolean given in /Applications/XAMPP/xamppfiles/htdocs/PhpProject1/skjema2.php on line 15 Warning: fwrite() expects parameter 1 to be resource, boolean given in /Applications/XAMPP/xamppfiles/htdocs/PhpProject1/skjema2.php on line 16 Warning: fwrite() expects parameter 1 to be resource, boolean given in /Applications/XAMPP/xamppfiles/htdocs/PhpProject1/skjema2.php on line 17 Warning: fwrite() expects parameter 1 to be resource, boolean given in /Applications/XAMPP/xamppfiles/htdocs/PhpProject1/skjema2.php on line 18 Warning: fclose() expects parameter 1 to be resource, boolean given in /Applications/XAMPP/xamppfiles/htdocs/PhpProject1/skjema2.php on line 19 Får opp denne feimeldingen når jeg bruker fwrite.. er problemet at jeg ikke har root access? $fp =fopen("text.txt","w"); fwrite($fp,$_SESSION["navn"]."\n"); fwrite($fp, $_SESSION["email"]."\n"); fwrite ($fp, $_SESSION["telefon"]."\n"); fwrite ($fp, $_SESSION["adresse"]."\n"); fwrite ($fp, $_SESSION["kommentar"]."\n"); fwrite ($fp, $_SESSION["dropdown"]."\n"); fwrite ($fp, $_SESSION["svar"]."\n"); fwrite($fp,"\r\n"); fclose($fp); Lenke til kommentar
ventle Skrevet 8. november 2012 Del Skrevet 8. november 2012 Hvis text.txt er en eksisterende fil, betyr det at du ikker har skrivetilgang til filen. Hvis text.txt ikke eksisterer, betyr det at du ikke har skrivetilgang til mappen du prøver å opprette filen i. 1 Lenke til kommentar
Crowly Skrevet 8. november 2012 Del Skrevet 8. november 2012 (endret) Legg inn en kontroll på om $fp er en resource eller er false, det er de to verdiene fopen returnerer if (false !== ($fp =fopen("text.txt","w"))) { fwrite($fp,$_SESSION["navn"]."\n"); fwrite($fp, $_SESSION["email"]."\n"); fwrite ($fp, $_SESSION["telefon"]."\n"); fwrite ($fp, $_SESSION["adresse"]."\n"); fwrite ($fp, $_SESSION["kommentar"]."\n"); fwrite ($fp, $_SESSION["dropdown"]."\n"); fwrite ($fp, $_SESSION["svar"]."\n"); fwrite($fp,"\r\n"); fclose($fp); } else echo 'Klarte ikke åpne eller opprette fila, sjekk skriverettigheter'; // alternativt $fp =fopen("text.txt","w"); if ($fp !== false) { // fwrite osv her } // eller if (is_resource($fs)) { // fwrite osv her } Løser ikke problemet med manglende skriverettigheter, men hindrer å kjøre unødvendig kode. Dermed ingen "Warning: fwrite() expects ...", men man bør da skrive sin egen feilmeldingen i en else. Endret 8. november 2012 av Crowly Lenke til kommentar
nepz Skrevet 8. november 2012 Forfatter Del Skrevet 8. november 2012 Problemet er løst! Endret litt på rettigheter, men den skriver ikke ut disse. fwrite ($fp, $_SESSION["kommentar"]."\n"); fwrite ($fp, $_SESSION["dropdown"]."\n"); fwrite ($fp, $_SESSION["svar"]."\n"); Merkelig, er jo helt lik kode? Lenke til kommentar
ventle Skrevet 8. november 2012 Del Skrevet 8. november 2012 Har du sjekket at det faktisk er noe innhold i disse variablene? Blir linjeskiftene skrevet? Lenke til kommentar
nepz Skrevet 8. november 2012 Forfatter Del Skrevet 8. november 2012 (endret) <form action="skjema.php" method="POST"> <p>Navn</p> <input type="text" name="navn"> <p>Email</p> <input type="text" name="kundemail"> <p>Telefon</p> <input type="text" name="telefon"> <p>Adresse</p><input type="text" name="adresse"> <p>Hva lurer du på?<br/> <select size="1" name="dropdown"> <option>Produkter</option> <option>Frakt</option> <option>Reklamasjon</option> <option>Annet</option> </select> <br /> <br /> <td>Er du kunde?<br /> Ja <input type="radio" name="svar" value="Ja" /> Nei<input type="radio" name="svar" value="Nei" /> </td> <br /> <br /> <p>Comment</p><textarea wrap="OFF" name="kommentar" rows="6" cols="25"></textarea><br /> <br /> <input type="submit" value="Send" /> </form> Jeg henter de fra index filen min. Har et form, som leder til neste side hvor detaljene blir skrevet ut. Hvor koden min skriver ut det kunden fyllte inn i skjema. Videre derifra kommer man til side tre hvor jeg skal drive med dette. Det er en skoleoppgave så jeg prøver å skjønne litt. Endret 8. november 2012 av nepz Lenke til kommentar
ventle Skrevet 9. november 2012 Del Skrevet 9. november 2012 Prøv følgende for å se hva som kommer inn fra skjemaet: <?php print_r($_POST); ?> Lenke til kommentar
Crowly Skrevet 9. november 2012 Del Skrevet 9. november 2012 $_SESSION henter ikke ting i fra ett form. Du må se hvilken metode du bruker for sending, i dette tilfellet så er det to alternativer POST og GET, du bruker POST: method="POST" Bruk $_GET eller $_POST, avhengig av hvilken metode skjemaet bruker, til å hente ut verdiene til feltene. fwrite($fp,$_POST["navn"]."\n"); fwrite($fp, $_POST["email"]."\n"); fwrite ($fp, $_POST["telefon"]."\n"); fwrite ($fp, $_POST["adresse"]."\n"); fwrite ($fp, $_POST["kommentar"]."\n"); fwrite ($fp, $_POST["dropdown"]."\n"); fwrite ($fp, $_POST["svar"]."\n"); For å få tilgang til $_SESSION, så må session_start() kalles før noe annen output. Jeg pleier alltid å ha den helt først i php skriptet <?php session_start(); // mer kode Men det er ikke noen grunn til å bruke session her. Lenke til kommentar
nepz Skrevet 9. november 2012 Forfatter Del Skrevet 9. november 2012 $_SESSION henter ikke ting i fra ett form. Du må se hvilken metode du bruker for sending, i dette tilfellet så er det to alternativer POST og GET, du bruker POST: method="POST" Bruk $_GET eller $_POST, avhengig av hvilken metode skjemaet bruker, til å hente ut verdiene til feltene. fwrite($fp,$_POST["navn"]."\n"); fwrite($fp, $_POST["email"]."\n"); fwrite ($fp, $_POST["telefon"]."\n"); fwrite ($fp, $_POST["adresse"]."\n"); fwrite ($fp, $_POST["kommentar"]."\n"); fwrite ($fp, $_POST["dropdown"]."\n"); fwrite ($fp, $_POST["svar"]."\n"); For å få tilgang til $_SESSION, så må session_start() kalles før noe annen output. Jeg pleier alltid å ha den helt først i php skriptet <?php session_start(); // mer kode Men det er ikke noen grunn til å bruke session her. Da blir ikke text.txt lagret med informasjon Lenke til kommentar
nepz Skrevet 9. november 2012 Forfatter Del Skrevet 9. november 2012 (endret) $_SESSION henter ikke ting i fra ett form. Du må se hvilken metode du bruker for sending, i dette tilfellet så er det to alternativer POST og GET, du bruker POST: method="POST" Bruk $_GET eller $_POST, avhengig av hvilken metode skjemaet bruker, til å hente ut verdiene til feltene. fwrite($fp,$_POST["navn"]."\n"); fwrite($fp, $_POST["email"]."\n"); fwrite ($fp, $_POST["telefon"]."\n"); fwrite ($fp, $_POST["adresse"]."\n"); fwrite ($fp, $_POST["kommentar"]."\n"); fwrite ($fp, $_POST["dropdown"]."\n"); fwrite ($fp, $_POST["svar"]."\n"); For å få tilgang til $_SESSION, så må session_start() kalles før noe annen output. Jeg pleier alltid å ha den helt først i php skriptet <?php session_start(); // mer kode Men det er ikke noen grunn til å bruke session her. Tror du jeg må endre på denne? $fp =fopen("text.txt","w"); Prøvde med denne og da dukker gammel informasjon opp også. $fp =fopen("text.txt","a+"); Endret 9. november 2012 av nepz Lenke til kommentar
Crowly Skrevet 9. november 2012 Del Skrevet 9. november 2012 Har du lest hva forskjellen på w og a+ er? Hvis ikke så ta en titt på http://www.php.net/manual/en/function.fopen.php og sjekk mode under parameter, forklarer bra forskjellen. Hvilken mode du skal bruke avhenger av hvordan du ønsker å bruke/skrive til fila. Ser ut til at du har løst problemet med å skrive til fila, hvis ikke så vis hele innholdet i skjema2.php, så det blir enklere å se alt du gjør (eller prøver å gjøre). Lenke til kommentar
nepz Skrevet 9. november 2012 Forfatter Del Skrevet 9. november 2012 Har du lest hva forskjellen på w og a+ er? Hvis ikke så ta en titt på http://www.php.net/m...ction.fopen.php og sjekk mode under parameter, forklarer bra forskjellen. Hvilken mode du skal bruke avhenger av hvordan du ønsker å bruke/skrive til fila. Ser ut til at du har løst problemet med å skrive til fila, hvis ikke så vis hele innholdet i skjema2.php, så det blir enklere å se alt du gjør (eller prøver å gjøre). Hadde en skriveleif i koden! $fp =fopen("text.txt","w"); Bruker "w" nå! Takker for hjelp Lenke til kommentar
nepz Skrevet 9. november 2012 Forfatter Del Skrevet 9. november 2012 (endret) <p>Hva lurer du på?<br/> <select size="1" name="dropdown"> <option>Produkter</option> <option>Frakt</option> <option>Reklamasjon</option> <option>Annet</option> </select> <br /> <br /> <td>Er du kunde?<br /> Ja <input type="radio" name="svar" value="Ja" /> Nei<input type="radio" name="svar" value="Nei" /> </td> <br /> <br /> <p>Kommentar</p><textarea wrap="OFF" name="kommentar" rows="6" cols="25"></textarea><br /> Dropdown menyen, radioknappene og kommentar feltet vil ikke vises i .txt dokumentet. Dette får jeg skrevet ut <form action="skjema.php" method="POST"> <p>Navn</p> <input type="text" name="navn"> <p>Email</p> <input type="text" name="kundemail"> <p>Telefon</p> <input type="text" name="telefon"> <p>Adresse</p><input type="text" name="adresse"> Her er 3. siden min hvor informasjonen som ble fyllt ut i skjema skal lagres i et .txt dokument. <?php session_start(); echo "<br/>"; echo "<h3>Din henvendelse er sendt!</h3>"; $fp =fopen("temp/text.txt","w"); fwrite($fp,$_SESSION["navn"]."\n"); fwrite($fp,$_SESSION["telefon"]."\n"); fwrite($fp,$_SESSION["adresse"]."\n"); fwrite($fp,$_SESSION["kundemail"]."\n"); fwrite($fp,$_SESSION["svar"]."\n"); fwrite($fp,$_SESSION["dropdown"]."\n"); fwrite($fp,$_SESSION["kommentar"]."\n"); fwrite($fp,"\r\n"); fclose($fp); ?> Dette skal jo være riktig? Nå står jeg helt fast. Fikk beskjed av foreleser om å bruke $_SESSION gjennom oppgaven. Endret 9. november 2012 av nepz Lenke til kommentar
Crowly Skrevet 10. november 2012 Del Skrevet 10. november 2012 (endret) Igjen, informasjon sendt fra ett html form havner ikke i $_SESSION (så fremt man ikke gjør $_SESSION=$_POST;). Du bruker post og informasjonen er da tilgjengelig i $_POST. Hvorfor har du fått beskjed om å bruke en session? Kan være oppgaven krever bruk av $_SESSION, men det må være til andre ting enn å behandle informasjonen fra form'et. Kommenter ut alt nedenfor session_start(); i skjema.php og legg til dette i stedet for echo 'Innhold i $_SESSION:<br/>'; echo '<pre>'; print_r($_SESSION); echo '</pre>'; echo '<br/>Innhold i $_POST:<br/>'; echo '<pre>'; print_r($_POST); echo '</pre>'; Da får du se alle felter i $_SESSION og $_POST, og hvilke verdier de har, hvis de har noen. print_r() og var_dump() er veldige kjekke til debugging, og det bør plasseres i <pre> tagger slik at det blir mest mulig lesbart (spesielt på større array's). Når du vet hvilke felter/variabler du skal bruke så kan du fjerne denne debugging koden igjen, og sette den andre tilbake. Endret 10. november 2012 av Crowly Lenke til kommentar
nepz Skrevet 10. november 2012 Forfatter Del Skrevet 10. november 2012 (endret) $_SESSION["comment"];$_REQUEST["kommentar"]; $_SESSION["dropdown"];$_REQUEST["dropdown"]; Hadde for mange semikolon! Endret 10. november 2012 av nepz Lenke til kommentar
Crowly Skrevet 10. november 2012 Del Skrevet 10. november 2012 (endret) Ikke bruk $_REQUEST, avhengig av konfigurasjon og php versjon så inneholder $_REQUEST alt fra $_GET, $_POST og evt. $_COOKIE. Du vet ikke hvor informasjonen kommer i fra. Gjør det heller til en vane å bruke $_POST, $_GET og $_COOKIE etter hvilket behov du har/hva du jobber med. Det gjør det også lettere for andre som leser koden, og se hvor man forventer at informasjonen skal komme/bli hentet fra. Endret 10. november 2012 av Crowly 1 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å