Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  10 1186
Hei, får en fancy liten feil i koden min. Har prøvd å fikse det men får ikke til...


Feil

Kode

Parse error: syntax error, unexpected T_VARIABLE, expecting '(' in /var/www/html/logs/reader.php on line 5

Index.php

Kode

<?php 

include("../system/check.php"); //Denne er bare for login så folk ikke kan lese loggene ;)
include_once("reader.php");

?>
<html>
<head>
<title>Log reader</title>
</head>
<body>
<form id="login" method="post" action="<?PHP checkfile(); ?>">
  <table>
    <tr align="right">
      <td><span>File:</span></td>
      <td><input name="file" id="file" class="textbox" type="text"></td>
    </tr>  
    <tr>        
      <td></td>        
      <td><input name="loginbtn" id="loginbtn" class="loginbtn" value="Log In" type="submit"></td>          
    </tr>
  </table>	  	
</form> 
</body>
</html>
Reader:

Kode

<?php
function checkfile() {
 if (!empty($_POST['file'])) {
	if $POST['file'] == "Secrit" {
		$file = "login.log";
		return READ();
	}
	elseif $POST['file'] == "login"
	{
		$file = "Secrit.log";
		return READ();
	}
	else 
	{
		die("Unknown file!");
	}
	die("ERROR: /dev/null not found!");
 }else{ return;}
}
function READ() {
	$f = fopen($file, "r");
	while ( $line = fgets($f, 1000) ) {
		print $line;
	}
}
?>
Og er det noen måte jeg kan få "reader" til å bli dynamisk på?

Feks. hvis æ skriv Error så åpner den error.log uten at jeg har "Hardkodet" dette?
Sist endret av darkslayer322; 20. september 2012 kl. 14:49.
Trigonoceps occipita
vidarlo's Avatar
Donor
Nei, korleis skal programmet kunne vite kva fil du sikter til? Du må ha en array e.l. med forbindelse mellom filnamn og logisk namn.

Alternativt kan du jo bruke wildcards, men det høres ut som oppskrift på katastrofe... :}
Hvor vanskelig er det å tyde error meldingen?

reader.php line 5:

Kode

if $POST['file'] == "Secrit" {
Denne forventer ( etter if.

Kode

if ($POST['file'] == "Secrit") {
Carrots for Fun!
darkslayer322's Avatar
Trådstarter
altså om det går ant at den tar error og gjør det til error.log

eller at d æ skriv i tekstfeltet i Index.php automatisk blir til filnavnet?


hvis æ skriv error.log så åpner den error.log?

Sitat av 0xFF Vis innlegg
Hvor vanskelig er det å tyde error meldingen?

reader.php line 5:

Kode

if $POST['file'] == "Secrit" {
Denne forventer ( etter if.

Kode

if ($POST['file'] == "Secrit") {
Vis hele sitatet...

Takker (Teit feil... Ble litt flau)

Men reader fungerer ikke som jeg hadde håpet ...

Når jeg submitter får jeg ikke noe i "return"

Er det bare jeg som ikke har skjønt logikken i hvordan PHP fungerer?...
Sist endret av darkslayer322; 20. september 2012 kl. 14:56.

Kode

    if $POST['file'] == "Secrit" {
        $file = "login.log";
        return READ();
    }
Variabelen $file eksisterer innenfor det scopet der, og kun der. Funksjonen READ har ikke tilgang på denne fordi den ($file) eksisterer ikke, eller har i alle fall ingen verdi innenfor scopet til funksjonen READ. Du kan sende inn variabelen $file til funksjonen som et argument.

Funksjonen READ returnerer ingen verdi, så det er absolutt ikke noen verdi å ha en return der.
Carrots for Fun!
darkslayer322's Avatar
Trådstarter
Har oppdatert skriptet. Det ser sånn hær ut nå.. Men fungerer fortsatt ikke


Index.php

Kode

<?php 

include("../system/check.php"); 
include_once("reader.php");

?>
<html>
<head>
<title>Log reader</title>
</head>
<link rel="stylesheet" href="../themes/sera-theme/sera-theme.css" type="text/css"/>
<body>
<form id="file" method="post" action="<?PHP READ($POST_['file']); ?>">
  <table>
    <tr align="right">
      <td><span>File:</span></td>
      <td><input name="file" id="file" class="textbox" type="text"></td>
    </tr>  
    <tr>        
      <td></td>        
      <td><input name="submitbtn" id="submitbtn" class="submitbtn" value="Log In" type="submit"></td>          
    </tr>
  </table>	  	
</form> 

<?PHP 

echo ("<span class='warning'>ALL available files:</span>");

$logs = glob("*.log");

foreach($logs as $log)
{
print "</br><span class='error'>".$log."</span>";
}

?>



</body>
</html>

Reader.php

Kode

<?php
function READ($file) {
	if (!EMPTY($file)){
		$f = fopen($file, "r");
		while ( $line = fgets($f, 1000) ) {
			print $line;
		}
	}
}
?>
Hvilken feilmelding får du? Du kan ta en titt på file_get_contents();, som også leser alt innhold i en fil.
Carrots for Fun!
darkslayer322's Avatar
Trådstarter
Får ikke feilmelding. problemet trur jeg er at READ ikke blir kjørt...

Sitat av darkslayer322 Vis innlegg
Får ikke feilmelding. problemet trur jeg er at READ ikke blir kjørt...
Vis hele sitatet...

Oppdatert ..
index

Kode

<?php 

include("../system/check.php"); 
include("reader.php");

?>
<html>
<head>
<title>Log reader</title>
</head>
<link rel="stylesheet" href="../themes/sera-theme/sera-theme.css" type="text/css"/>
<body>
<form id="file" method="post" action="<?PHP echo $PHP_SELF; ?>">
  <table>
    <tr align="right">
      <td><span>File:</span></td>
      <td><input name="file" id="file" class="textbox" type="text"></td>
    </tr>  
    <tr>        
      <td></td>        
      <td><input name="submitbtn" id="submitbtn" class="submitbtn" value="Log In" type="submit"></td>          
    </tr>
  </table>	  	
</form> 

<?PHP 
if (!EMPTY($POST_['file'])) { READ($POST_['file']); }
echo ("<span class='warning'>ALL available files:</span>");

$logs = glob("*.log");

foreach($logs as $log)
{
print "</br><span class='error'>".$log."</span>";
}

?>



</body>
</html>
Kjørte denne får å teste. Funka fint... Så selve funksjon fungerer i seg selv..

Kode

		$f = fopen("login.log", "r");
		while ( $line = fgets($f, 1000) ) {
			print $line . "</br>";
		}
Arrayet som inneholder alle verdier sendt inn med HTTP-POST heter $_POST, og ikke $POST_.

Edit: Et lite tips for å f.eks kunne se verdier på verdier er å bruke var_dump på variabler, da vil du kjapt kunne se innholdet i de. I dette tilfellet så kan du se på var_dump( $_POST );
Sist endret av m0b; 20. september 2012 kl. 16:19.
Carrots for Fun!
darkslayer322's Avatar
Trådstarter
Fikset den feilen. Men fungerer fortsatt ikke... ://

Æ e så flink å ikkje få nokka te å funke
Jeg vil anbefale deg å så kjapt som mulig å bruke et IDE som støtter debugging. Da vil du kunne kjøre koden din i debugging modus, sette opp breakpoints og så kunne linje for linje følge med hva det er som foregår i koden. Dette sparer deg for mye luring og spekulasjoner.

Zend Studio har blant annet muligheter for dette.

http://www.developertutorials.com/tu...o-8-02-01-938/ og eventuelt søk etter tutorials/guider selv på hvordan man gjør debugging.

Dette er noe som etter min mening er noe absolutt alle som koder bør kunne. Uten unntak!
Sist endret av m0b; 20. september 2012 kl. 17:28.