Gå til innhold

[Løst] Problemer med fwrite


Anbefalte innlegg

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
Videoannonse
Annonse

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 av Crowly
Lenke til kommentar

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

<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 av nepz
Lenke til kommentar

$_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

$_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

$_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 av nepz
Lenke til kommentar

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

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

<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 av nepz
Lenke til kommentar

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 av Crowly
Lenke til kommentar

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 av Crowly
  • Liker 1
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...