• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Weiss bei fwrite und fopen nich weiter.

Status
Für weitere Antworten geschlossen.
Werbung:
Das habe ich ausgedruckt aund auch schon zichmal durchgelesen. ich brauche einfach nur ein script, an dem ikch erkennen kann, wie so etwas aufgebaut ist. Mehr will ich doch gar nicht!
 
Werbung:
ohne grundlagen wird das nichts. das ganze tut nutzt nichts, wenn du ohne wissen da 'rein gehst. such' eben mal nach textbasierten gästebüchern o.ä., schaus dir an und werd' schlau.

Nils aka XraYSoLo
 
du sagst uns ja netma wie und warum sie geändert werden soll?

bekommt man bei dir nen fetten bonus wenn man auch mal auf die seite geht? :p

du kannst ja nen link machen:

Code:
<a href="deineURL&amp;erhoehen=10">Hier Kontostand erhöhen</a>
PHP:
if (isset($_REQUEST['erhoehen'])) {
if (!is_int($_REQUEST['erhoehen']) OR is_float($_REQUEST['erhoehen'])) {
$konto = $konto + $_REQUEST['erhoehen'];
}
else {
echo "Dies hätte keine korrekte Addition zur Folge!";
}
}

p.s.: is ein kleiner fehler drin xD zum "im-warmen-zimmer-nachdenken"
 
Ich habe ma versucht, aus dem, was ich da entnommen habe, ein script zu machen. ich glaube das funktioniert eh nich.

PHP:
<?php
$handle = fopen ("/username/kontostand.php", "a");
?>
<?php
$filename = '/username/kontostand.php';
$konto += 50;

if (is_writable($filename)) {

if ( !$handle = fopen($filename, "a")) {
print "Kann dein Konto namens $filename nicht finden";
exit

print "Dein Kontostand ist $konto";

fclose($handle);
}
else {
print "Fehler beim Kontostand Aufladen";
}
?>

Und in kontostand.php steht das:

PHP:
<?php
echo "Dein Kontostand ist";
echo "$konto";
echo "Einheiten.";
?>

Funktioniert das so oder muss cihda wsa umändern?
 
Werbung:
PHP:
if (isset($_REQUEST['erhoehen']))
{
    if (is_numeric($_REQUEST['erhoehen']))
    {
        $konto += $_REQUEST['erhoehen'];
    }
    else
    {
        echo 'Dies hätte keine korrekte Addition zur Folge!';
    }
}
Wenn schon beispiele dann bitte auch richtig eingerückt ;)

@OP: ich hab dir schon ein beispiel gegeben weiter oben ...
 
NetzSchleicher schrieb:
Ich habe ma versucht, aus dem, was ich da entnommen habe, ein script zu machen. ich glaube das funktioniert eh nich.

PHP:
<?php
$handle = fopen ("/username/kontostand.php", "a");
?>
<?php
$filename = '/username/kontostand.php';
$konto += 50;

if (is_writable($filename)) {

if ( !$handle = fopen($filename, "a")) {
print "Kann dein Konto namens $filename nicht finden";
exit

print "Dein Kontostand ist $konto";

fclose($handle);
}
else {
print "Fehler beim Kontostand Aufladen";
}
?>

Und in kontostand.php steht das:

PHP:
<?php
echo "Dein Kontostand ist";
echo "$konto";
echo "Einheiten.";
?>

Funktioniert das so oder muss cihda wsa umändern?

1. du musst erst fread() auf das handle benutzen um den kontostand herauszufinden (datei mit 'r' öffnen)
2. dann musst du auch noch mit fwrite() den neuen wert in die datei schreiben (datei mit 'w' öffnen)
3. Immer schön einrücken! siehe meinen letzten Post -> einige logikfehler
4. immer ein semikolon nach jedem befehl
5. mal überlegen wie das alles funktionieren soll - ein ablaufdiagramm wäre net schlecht

Code:
Datei zum lesen öffnen => Wert Auslesen => Datei schliessen => Wert erhöhen => Datei zum schreiben öffnen => Wert Speichern => Datei schliessen => Wert ausgeben
 
Werbung:
Kannst du mir dann mal ein richtiges Script erstellen, damit ich sehe, wie ich das in Zukunft machen muss? Vielleicht komme ich dann n Stück weiter PHP ein wenig zu beherrschen.
 
wenn du versprichst das du das script DURCHLESEN, VERSTEHEN und nochmal selbst versuchen wirst vll zu verbessern ;)
PHP:
<?php
// Die Datei
$dateiname = './kontostand.db';

// Der addierte Wert
$summand  = 50;
?>

Der Dateinhalt wird mit file_get_contents () ausgelesen,
es wird mit is_readable () überprüft ob sie lesbar ist:
PHP:
<?php
if( true === is_readable( $dateiname ) )
{
    $dateinhalt = file_get_contents( $dateiname );
}
else
{
    exit( 'Die Datei ist nicht lesbar!' ); // Script beenden
}
?>
Der Dateinhalt wird sicherheitshalber auf eine ganzzahl gerundet
PHP:
<?php
$dateinhalt = (int) $dateinhalt;
?>
Der Summand wird addiert:
PHP:
<?php
$dateinhalt += $summand;
?>
Der Wert wird gespeichert:
PHP:
<?php
if( false === is_writable )
{
    exit 'Datei ist nicht schreibbar.';
}
// Datei zum schreiben (w => Write => schreiben) öffnen
$dateiresource = fopen($dateiname, 'w');

// Neuen Inhalt schreiben:
fwrite($dateiresource, $dateinhalt);
// Datei schliessen ( schont resourcen )
fclose($dateiresource);
?>
(Wenn du php5 hast, versuch dochmal das vorherige mit der funktion file_put_contents() zu lösen)
Der neue wert wird mit printf () ausgegeben:
PHP:
<?php
printf('Sie haben jetzt %i Cyberdollar auf ihrem Konto.', $dateinhalt);
?>

Es kann sein das das script fehler enthält - ich habe es nicht getestet, wenn ja solltest du erstmal SELBST versuchen sie zu lösen
 
So, ich setz mcih dran und habe uahc noch n paar Fehler entdeckt. Hier das verbesserte
niklasboelter schrieb:
wenn du versprichst das du das script DURCHLESEN, VERSTEHEN und nochmal selbst versuchen wirst vll zu verbessern ;)
PHP:
<?php
// Die Datei
$dateiname = './kontostand.db';

// Der addierte Wert
$summand  = 50;
?>

Der Dateinhalt wird mit file_get_contents () ausgelesen,
es wird mit is_readable () überprüft ob sie lesbar ist:
PHP:
<?php
if( true == is_readable( $dateiname ) )
{
    $dateinhalt = file_get_contents( $dateiname );
}
else
{
    exit( 'Die Datei ist nicht lesbar!' ); // Script beenden
}
?>
Der Dateinhalt wird sicherheitshalber auf eine ganzzahl gerundet
PHP:
<?php
$dateinhalt = (int) $dateinhalt;
?>
Der Summand wird addiert:
PHP:
<?php
$dateinhalt += $summand;
?>
Der Wert wird gespeichert:
PHP:
<?php
if( false == is_writable )
{
    exit 'Datei ist nicht schreibbar.';
}
// Datei zum schreiben (w => Write => schreiben) öffnen
$dateiresource = fopen($dateiname, "w");

// Neuen Inhalt schreiben:
fwrite($dateiresource, $dateinhalt);
// Datei schliessen ( schont resourcen )
fclose($dateiresource);
?>
(Wenn du php5 hast, versuch dochmal das vorherige mit der funktion file_put_contents() zu lösen)
Der neue wert wird mit printf () ausgegeben:
PHP:
<?php
printf('Sie haben jetzt %i Cyberdollar auf ihrem Konto.', $dateinhalt);
?>

Es kann sein das das script fehler enthält - ich habe es nicht getestet, wenn ja solltest du erstmal SELBST versuchen sie zu lösen

Eine Frage: Was bitte ist eine *.db-Datei??? Geht nicht einfach kontostand.php?
 
Werbung:
oh uh da hab ich ja was gemacht

is_writable muss natürlich is_writable( $dateiname ) heissen ;)

also das .db ist einfach nur eine dateiendung -ein TEIL eines dateinamens.

und die sind (ja windows user schaut her) VOLLKOMMEN IRRELEVANT. unter unix ist es vollkommen egal wie eine datei heisst (unter windows eigtl auch, nur will windows immer was anderes erzählen)
 
richtig (: aber vorsicht: es wird NUR eine zahl in der datei gespeichert, du kannst da keinen php code oder so mit reinbauen ;)
 
Werbung:
Also erstmal DANKE für eure Geduld mit mir.

Ich habe dann noch Fragen bezüglich anderer Dateien, die bei dem ganze Konto-Zeugs ne Rolle spielen.

Also erstmal das Subtraktions-Skript.

PHP:
<?php
$dateiname = "./kontostand.php";
$subtrahent = 50;

if (true === is_readable)
          {
          $dateiinhalt = fiel_get_contents(kontostand.php);
          }
else
          {
          exit('Konnte dein Konto leider nicht finden');
          }

$dateiinhalt = (int) $dateiinhalt;

// Sperre, damit keine MinusZahlen entsehen. Hoffe das ist richtig.
if ($subtrahent > $dateiinhalt) 
          {
          exit('Du hast zu wenig Einheiten');
          }

$dateiinhalt -= $subtrahent;

if (false === is_writable)
          {
          exit('Konnte dein Konto leider nicht finden');
          }

$dateiresource = fopen($dateiname, "w");

fwrite ($dateiressource, $dateiinhalt);

fclose ($dateiressource);
?>

Ist das alles so richtig? Ich kann manchmal so blöd sein und Fehler einbauen, obwohl es vorher richtig war :)

Dann noch eine Frage zur Datei, bei der ich die Zahl aus kontostand.php mit fgets reinholen muss. Ist folgender Code für die Seite richtig?

PHP:
<?php
$dateiname = './kontostand.php';

if (is_readable === true)
              {
              $dateiinhalt = file_get_content('./kontostand.php');
              }

$dateiinhalt = (int) $dateiinhalt;

echo "Dein Kontostand beträgt" . $dateiinhalt . "Einheiten.";
?>

Wenn das richtig ist, dann wäre das das erste mal, dass ich in PHP was komplett richtig mache.
 
du musst is_readable() immer als funktion benutzen:

Code:
is_readable( $dateiname )

Und ansonsten: teste es doch einfach mal und guck welche fehler du kriegst ;)

Code:
error_reporting(E_ALL);

in die 1. php zeile und du solltest alle fehler sehen
 
Werbung:
Ok, eine Frage noch: Was ist hier in Line 10 falsch?
PHP:
<?php
$dateiname = 'kontostand.txt';
$subtrahent = 50;

if (true === is_readable ($dateiname) ) {
$dateiinhalt = file_get_contents($dateiname);
}
else
{
exit 'Kann dein Konto nicht finden'; //Zeile 10
}

$dateiinhalt = (int) $dateiinhalt;

if ($dateiinhalt <= $subtrahent) {
exit 'Du hast nicht genug Zen'
}
if (false === is_writable (&dateiname) ) {
exit 'Kann dein Konto nicht finden';
}
$dateiressource = fopen($dateiname, "w");
fwrite ($dateiresource, $dateiinhalt);
fclose ($dateiresource);
?>
<html>
<head>
<title></title>
<meta type="refresh" content="1, kontostand_ende.php">
<link rel="stylesheet" href="style.css">
</head>
<body >

</body>
</html>

Link: http://gonewild.funpic.de/GB/konto_abzug.php
 
Zuletzt bearbeitet von einem Moderator:
Status
Für weitere Antworten geschlossen.
Zurück
Oben