Archief - PHP: probleem met een scriptje

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

tikketim

Legacy Member
ik ben bezig aan men eerste zelfgemaakte php script en het is bijna af maar er is 1 probleem.
Het is dus een klein nieuws systeempje maar als ik iets toevoeg komt hetgeen ik toevoeg niet vanboven maar vanonder te staan :s

index :

PHP:
<?php

include "news.dat";

?>

login :
PHP:
<form name="form" method="post">
user :<br>
<input type="text" name="user"><br>
password :<br>
<input type="password" name="password"><br>
<input type="submit" name="submit" value="login">
</form>

<?php
	
$user = "test";
$password ="test";

if(($_POST['user'] == $user) AND ($_POST['password'] ==$password))

{

	echo "<form name=\"form\" action=\"ok.php\">";
	echo "naam :<br>";
	echo "<input type=\"text\" name=\"naam\"><br>";
	echo "titel :<br>";
	echo "<input type=\"text\" name=\"titel\"><br>";
	echo "tekst :<br>";
	echo "<textarea cols=\"30\" rows=\"10\" name=\"tekst\"></textarea><br>";
	echo "<input type=\"submit\" name=\"submit\" value=\"toevoegen\">";
	echo "</form>";
	
}

else
{
	echo "";
}


 
?>

ok :

PHP:
<?php

$bestand = "news.dat";
$bestand_file = file($bestand);
$file_open = fopen($bestand, "a");

$bericht = nl2br($bericht);

fwrite($file_open, "<br> $titel <br> $tekst <br> added by : $naam\n");


fclose($file_open);

echo("Data toegevoegd");

?>

grtz Tim

jeroen65

Legacy Member
Das normaal hé. Dat hij het vanonder bijvoegd. Om het vanboven te doen met je het eerste bestand kopieren dan een uw bestand leeg maken. De nieuwe code bijvoegen en dan weer het tijdelijke bestand (dat je gekopieert hebt) toevoegen bij uw bestand.

PerfectPC

Legacy Member
jeroen65 zei:
Das normaal hé. Dat hij het vanonder bijvoegd. Om het vanboven te doen met je het eerste bestand kopieren dan een uw bestand leeg maken. De nieuwe code bijvoegen en dan weer het tijdelijke bestand (dat je gekopieert hebt) toevoegen bij uw bestand.
ma zeveraar... ;)

'r+' Open for reading and writing; place the file pointer at the beginning of the file
ge moet natuurlijk wel de goeie fopen mode gebruiken hé :p

tikketim

Legacy Member
nah werkt ook niet
die r+ in de plaats van a , nu geeft die alleen het laatst geplaatste bericht weer :s

grtz Tim

Cakeman

Legacy Member
Dan moet je r+ en a samen gebruiken. (Ik geloof toch dat dat gaat)

tikketim

Legacy Member
lokaal gebruik ik windows en ik denk online ook (webspace is van iemand anders)

grtz Tim

killgore

Legacy Member
alle dan, dit zou moeten werken:
PHP:
<?php
$file_open = fopen($bestand, "a");
fseek($file_open,0);
?>

edit: woordje uitleg:
a opent voor schrijven, maakt bestand aan als er nog geen is (daarom vooral heb je a nodig) en zet filepointer op het einde van het bestand.
met fseek zetten we de pointer dan weer op 0, het begin v/h bestand.
Nu zou alles perfect moeten werken :)

tikketim

Legacy Member
hmz , het lijkt te werken nu , ik heb van het dat bestandje en gewoon txt bestandje gemaakt en het stukje code van killgore toegevoegd en r+ in de plaats van a :)

thx all !

grtz Tim

tikketim

Legacy Member
grmbl , nu doet die het weer niet meer , met die r+ zet hij soms tekst van de vorige post erbij enzo , a blijft gewoon vanonder plaatsen ook met dat deeltje van killgore erbij :s

grtz Tim

PerfectPC

Legacy Member
Note: Different operating system families have different line-ending conventions. When you write a text file and want to insert a line break, you need to use the correct line-ending character(s) for your operating system. Unix based systems use \n as the line ending character, Windows based systems use \r\n as the line ending characters and Macintosh based systems use \r as the line ending character.
Windows offers a text-mode translation flag ('t') which will transparently translate \n to \r\n when working with the file. In contrast, you can also use 'b' to force binary mode, which will not translate your data. To use these flags, specify either 'b' or 't' as the last character of the mode parameter.
If you do not specify the 'b' flag when working with binary files, you may experience strange problems with your data, including broken image files and strange problems with \r\n characters.
.....

killgore

Legacy Member
tikketim zei:
grmbl , nu doet die het weer niet meer , met die r+ zet hij soms tekst van de vorige post erbij enzo , a blijft gewoon vanonder plaatsen ook met dat deeltje van killgore erbij :s

grtz Tim
srry, maar dan heb jij hier toch andere code gepost dan je gebruikt, ik heb het hier op 2 pc's getest (eens de 4.3 en eens de 5) en op beiden werken ze perfect :).

@ hierboven: dat heeft nu eens niets te maken met of dat ding vanboven of vanonder komt :p

BertG

Legacy Member
probeer es "at" of "wt" die t is om text to forcen onder windows....

GuntherDW

Legacy Member
ik doe het zo voor m'n shoutbox :)

(php tags in het begin toegevoegd anders parset vb het ni goe >_>
PHP:
<?php
?><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta http-equiv="pragma" content="no-cache">
 <title>GuntherDW's shoutbox integrated in the comics system</title>
<?php if($customcss == "1") {
	echo " <link rel=\"stylesheet\" type=\"text/css\" href=\"".$customcssurl."\">\n";
}
?>
</head>
<body>
<?php

$name = $_POST['name'];
$shout = $_POST['shout'];

class shouts {
	
	var $shoutfile;
	var $shouts;
	
	
function replacecolors() {
	// not used
}
	
function shout($name, $shout) {

	if($_COOKIE['timeout'] == 1) { 
	echo "Failed to send data to shoutbox,<br> reason : 5 mins ban<br><br><hr>";
		} else {
	$this->shoutfile = "./shouts/shout.txt";
	$file = $this->shoutfile;
	$fp = fopen($file, "a");
	$contents = fread($fp, filesize($file));
	$name = substr($name, 0, 10);
	$shout = substr($shout, 0, 100);
	
	
	// method for now = "\n $ip~ $reason"
	
	if(@!fputs($fp, "\n".$name."~".addslashes($shout))) {
		echo("<br><font color=\"red\">Error during inserting stuff to the text file, check if the priorities are correct and try again.</font><br>");
		echo("Debug info: <br>");
		echo("file = ".$this->shoutfile."<br>");
		echo("chmod value : has to be at least 0666<br><br><br>");
	}
	fclose($fp);
	setcookie("timeout", 1, time()+300);
		}
}

function delshouts() {
	
	$this->shoutfile = "./shouts/shout.txt";
	unlink($this->shoutfile);
	
}

function readshouts() {
	
	
	$this->shoutfile = "./shouts/shout.txt";
	$shouts = $this->shoutfile;
	$fp = fopen($shouts, "r");
	$contents = fread($fp, filesize($shouts));
	$contentsarray = explode("\n", stripslashes($contents));
	for($x = 0; $x < count($contentsarray); $x++)
	{
	$contentsarray[$x] = explode("~", $contentsarray[$x]);
	}
	$this->shouts = $contentsarray;
	
	/*
	echo "<pre>";
	stripslashes(print_r($this->shouts));
	echo "</pre>";
	*/
	
	echo "<table border=\"0\" cellspacing=\"0\">";
	for($x = count($contentsarray); $x >= 0; $x--)
	{
		if($contentsarray[$x][0] != "") {
			$contentsarray[$x][0] = htmlspecialchars($contentsarray[$x][0]);
			if(preg_match("/&lt;/", $contentsarray[$x][0])) {
				echo("<tr><td><font color=\"red\">#CENSOR#</font></td>");
			} else {
				echo "<tr><td>";
				echo(stripslashes($contentsarray[$x][0]));
				// echo "</font>";
			}
			echo("</td><td> - &nbsp;</td><td>");
			$contentsarray[$x][1] = htmlspecialchars($contentsarray[$x][1]);
			if(preg_match("/&lt;/", $contentsarray[$x][1])) {
				echo("<font color=\"red\">#CENSOR#</font>");
			} else {

				$contentsarray[$x][1] = str_replace("#RED", "<font color=\"red\">", $contentsarray[$x][1]);
				$contentsarray[$x][1] = str_replace("#BLUE", "<font color=\"blue\">", $contentsarray[$x][1]);
				$contentsarray[$x][1] = str_replace("#BLACK", "<font color=\"black\">", $contentsarray[$x][1]);
				$contentsarray[$x][1] = str_replace("#GREEN", "<font color=\"green\">", $contentsarray[$x][1]);
				$contentsarray[$x][1] = str_replace("#PINK", "<font color=\"pink\">", $contentsarray[$x][1]);
				$contentsarray[$x][1] = str_replace("#NORMAL", "</font>", $contentsarray[$x][1]);

				echo(stripslashes($contentsarray[$x][1]));
				// echo "</font>";
			}
			echo("</td></tr>\n");
		}
	}
	echo "</table>";
	
	
}
}

if(!function_exists(choose_comic))
{
	echo "Dependancy missing : choose_comic.php";	
}
else
{
	echo choose_comic();
}

$a = new shouts;
if($_GET['shout'] == 1) {
	$a->shout($name, $shout);
}
if($_GET['shout'] != 1) {
	$a->readshouts();
} else {
	?>
	Successfully shouted, click <a href="comics.php?comic=shoutbox">here</a> to return to the shoutpage :) <br>
	<?php
}
?><br><br><br><br>
	<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>?comic=shoutbox&amp;shout=1"><table border="0">
	<tr><td>
	Name : </td><td><input type="text" name="name" /></td></tr>
	<tr><td>
	shout : </td><td><input type="text" name="shout" /></td></tr>
	</table>
	<input type="submit" value="submit!" />
	</form>
	color codes = #<font color="red">RED</font>, #<font color="blue">BLUE</font>,
	#<font color="black">BLACK</font>, #<font color="green">GREEN</font>,
	#<font color="pink">PINK</font>.<br>
	DON'T FORGET TO END THE COLOR TAGS WITH <font color="red"><b>#NORMAL</b></font> !!

<p>
  <a href="http://validator.w3.org/check?uri=referer"><img border="0"
      src="http://www.w3.org/Icons/valid-html401"
      alt="Valid HTML 4.01!" height="31" width="88"></a>
 <a href="http://jigsaw.w3.org/css-validator/check/referer">
  <img style="border:0;width:88px;height:31px"
       src="http://jigsaw.w3.org/css-validator/images/vcss" 
       alt="Valid CSS!">
 </a>
</p>
</body>
</html>
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan