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

Vote Script funzt...oder doch nicht?

Status
Für weitere Antworten geschlossen.

BashGrinder

Neues Mitglied
Nabend !!


Also..ich habe hier ein ganz kleines, simples Vote Script, wo man halt angeben kann, wie man einen Artikel befindet. Screenshot:




Und so sieht das ganze aus, wenn ich es in einem Unterordner Include:




Und ich blicke einfach nicht durch warum...

Hier der kurze Code:


Code:
<link rel="stylesheet" href="/format.css" type="text/css">
<? 
extract($HTTP_GET_VARS);
extract($HTTP_POST_VARS);
/********* PHP Voting SYSTEM v1.0 ************ 
Copyright 2007, Scriptsez.net
You have to leave the copyright. 
If you have any problem just let us know.
Website: http://www.scriptsez.net
**********************************************/ 
$ficdest1=explode(".",basename($PHP_SELF)); 
$ficdest="vote/".$ficdest1[0].".dat";
$ip = getenv(REMOTE_ADDR); 
    if(file_exists($ficdest)) { 
     $compteur=fopen($ficdest, "r"); 
     $old_stats=file($ficdest); 
     $stats=explode("|", $old_stats[0]); 
     fclose($compteur); 
     $new_count=$stats[0]; 
     $ip_hit=$ip;
} 
else { 
     $nouveau_compteur=fopen($ficdest, "w"); 
     fputs($nouveau_compteur, "0|0|0|0|"); 
     fclose($nouveau_compteur); 
} 

if (!empty($envoi)&& $note !="") { 
$vote=fopen($ficdest, "r"); 
$old_stats=file($ficdest); 
$stats=explode("|", $old_stats[0]); 
fclose($vote); 
$nbr_votes=$stats[0]; 
$moy_votes=$stats[1]; 
if ($stats[3] != $ip) {
$new_count = $stats[0]+1;         
if($note=="gut"){
$moy_votes1=$moy_votes+1;
$statical=$stats[2];
}elseif($note=="schlecht"){
$statical=$stats[2]+1;
$moy_votes1=$moy_votes;
}
$vote=fopen($ficdest, "w"); 
$new_stats=fputs($vote, "$new_count|$moy_votes1|$statical|$ip|");
fclose($vote); 
echo "<font face=Verdana size=2 color=blue>Danke für das abgeben Ihrer Meinung!</font>";
} 
else { echo "<font face=Verdana size=2 color=red>Sie haben Ihre Meinung schon abgegeben!</font>";
     $vote=fopen($ficdest, "w"); 
     $new_stats=fputs($vote, "$stats[0]|$stats[1]|$stats[2]|$ip|"); 
     fclose($vote); 

} 
}
?>
<!-- Copyright Scriptsez.net Visit http://www.scriptsez.net to get this script for Free -->
<?php
print ("<form method=post>"); 
$old_stats=file($ficdest); 
$stats=explode("|", $old_stats[0]);
$total=($stats[1]+$stats[2]);
if($total<="0"){
$total="1";
$mtotal="Bisher noch nicht abgestimmt";
}else{
    if($total=="1"){$spell="Abstimmung";}else{$spell="Abstimmungen";}
$mtotal="$total $spell";
}
$gpercentage=(($stats[1]/$total)*1000);
$goodp=round(($gpercentage / 10 * 10))/10;
$bpercentage=(($stats[2]/$total)*1000);
$badp=round(($bpercentage / 10 * 10))/10;
echo "<table><tr><td><img src=/images/thumbs_up.gif>$goodp %</td><td> &nbsp; </td><td><img src=/images/thumbs_down.gif>$badp %</td><td>[$mtotal]</td></tr></table>";
echo"<table><tr><td align=center><img src=/images/thumbs_up.gif></td><td><input type=radio name=note value=Good>Gut</td>";
echo"<td align=center><img src=/images/thumbs_down.gif></td><td><input type=radio name=note value=Bad>Schlecht</td>";
print ("<td><input type=hidden name=envoi value=1><input type=submit value=Abstimmen style=background:#ffcc00;border-width:1;Border-color:#ffcc00;></td></tr></table></form></font>");
?>
 
Werbung:
Und so sieht das ganze aus, wenn ich es in einem Unterordner Include:
Und ich blicke einfach nicht durch warum.

Naja, Du musst doch die Fehlermeldungen bloß lesen:

"No such file or directory" - Das heißt, die Datei, die Du includen willst, gibt es unter dem von Dir angegebenen Pfad nicht. Überprüfe also Deine Pfade und Deine Directory-Struktur und achte darauf, in welchem Verzeichnis Du Dich im Moment des includens befindest.

"Supplied argument ist not a valid stream resource" heißt, dass das Argument, das den Stream angibt, kein solcher ist. D.h. da fehlt ein fopen() oder Du das das fopen() irgendwo anders gemacht, so dass die Variable im Kontext des fputs() oder fclose() nicht mehr gültig ist. Abhilfe schaffst Du da z.B. mit "global".

Gruß,
-Efchen
 
Das Scripot "vote.php" liegt im /htdocs, also Hauptverzeichnis. Die Datei, wo es included wird, in einem anderen Ordner. also /ordner/seite.php


Und da ist halt das include angegeben

include /vote.php

Also das ist schon alles korrekt...
 
Werbung:
/vote.php
führt zur Datei vote.php im Document-Root-Verzeichnis.
Um zu beurteilen ob das korrekt ist, müsste man dein Doc-Root wissen.

Es könnte durchaus sein das der Doc-Root c:\ ist, je nach Einstellung halt.
 
/vote.php
führt zur Datei vote.php im Document-Root-Verzeichnis.
Nein, bei normalen Server-Einstellungen führt das zu einer Datei /vote.php im Filesystem des Rechners, auf dem der Webserver läuft.

Um eine Datei im DOCUMENT_ROOT zu includen, schreibt man für gewöhnlich:
Code:
<?php include($_SERVER["DOCUMENT_ROOT"]."/vote.php"); ?>

@BashGrinder:
Wenn alles korrekt ist, versteh ich nicht, warum Du sagst, dass es nicht geht. Oder Umkehrschluss: Wenn es nicht geht, kann doch nicht alles korrekt sein! Beides zu behaupten schließt sich aus.
 
Werbung:
Hallo,

Ganz einfach, weil er die PHP-Sicherheitsmechanismen aushebeln will ohne es tatsächlich zu tun.
würde er bei seinem Beispiel z.B. den Hack-Aufruf
http://localhost/rookiecup/berichte/michiganjuni.php?PHP_SELF=/rookiecup/berichte/michiganjuni.php
verwenden, würde sein Skript auf anhieb funktionieren.

Ursache:
Der Junge hat einfach vergessen, auch alle globalen Server-Variablen plain einzulesen ..... a la extract( $_SERVER) z.B.. So kann er dann die bislang nicht belegte Variable $PHP_SELF mit dem Skriptnamen versehen und siehe da... der Fehler, dass der Zugriff auf die Datei "vote/.dat" nicht mehr funktioniert, ist weg - vorrausgesetzt, da liegt eine entsprechende :-D

Gruß,
Jumper, the II.
 
Ich meinte ja auch, dass alle Pfade korrekt sind;)


Und bei dem rest verstehe ich nur Bahnhof..wo muss ich nun was ändern???:?:
 
...
Und bei dem rest verstehe ich nur Bahnhof..wo muss ich nun was ändern???:?:

Wer programmiert Dir dann das PHP?

PHP:
...
// Inject-enabled ... security features disabled
extract($HTTP_GET_VARS);    // or $_GET
extract($HTTP_POST_VARS);   // or $_POST
extract($HTTP_SERVER_VARS); // or $_SERVER
// end of inject preparing
// begin free hacked code ....
...

Ansonsten empfehle ich dir noch folgende Lektüre:
[ PHP ] register_globals, was hat es damit auf sich?.
Dein extract stellt sozusagen den Zustand

register_globals = 0n

wieder her.

Gruß,
Jumper, the II.
 
Werbung:
ähhm ihr verrennt euch da ein wenig, es gibt die datei vote/.dat nicht es können also keine einträge geschrieben werden.
 

Anhänge

  • vote_dat.jpg
    vote_dat.jpg
    10 KB · Aufrufe: 6
Hmm...also ich habe das ganze jetzt einfach mal oben im Skript eingefügt...

Code:
<link rel="stylesheet" href="/format.css" type="text/css">
<? 
// Inject-enabled ... security features disabled
extract($HTTP_GET_VARS);    // or $_GET
extract($HTTP_POST_VARS);   // or $_POST
extract($HTTP_SERVER_VARS); // or $_SERVER
// end of inject preparing
// begin free hacked code ....
extract($HTTP_GET_VARS);
extract($HTTP_POST_VARS);
/********* PHP Voting SYSTEM v1.0 ************ 
Copyright 2007, Scriptsez.net
You have to leave the copyright. 
If you have any problem just let us know.
Website: http://www.scriptsez.net
**********************************************/ 
$ficdest1=explode(".",basename($PHP_SELF)); 
$ficdest="vote/".$ficdest1[0].".dat";
$ip = getenv(REMOTE_ADDR); 
    if(file_exists($ficdest)) { 
     $compteur=fopen($ficdest, "r"); 
     $old_stats=file($ficdest); 
     $stats=explode("|", $old_stats[0]); 
     fclose($compteur); 
     $new_count=$stats[0]; 
     $ip_hit=$ip;
} 
else { 
     $nouveau_compteur=fopen($ficdest, "w"); 
     fputs($nouveau_compteur, "0|0|0|0|"); 
     fclose($nouveau_compteur); 
} 

if (!empty($envoi)&& $note !="") { 
$vote=fopen($ficdest, "r"); 
$old_stats=file($ficdest); 
$stats=explode("|", $old_stats[0]); 
fclose($vote); 
$nbr_votes=$stats[0]; 
$moy_votes=$stats[1]; 
if ($stats[3] != $ip) {
$new_count = $stats[0]+1;         
if($note=="gut"){
$moy_votes1=$moy_votes+1;
$statical=$stats[2];
}elseif($note=="schlecht"){
$statical=$stats[2]+1;
$moy_votes1=$moy_votes;
}
$vote=fopen($ficdest, "w"); 
$new_stats=fputs($vote, "$new_count|$moy_votes1|$statical|$ip|");
fclose($vote); 
echo "<font face=Verdana size=2 color=blue>Danke für das abgeben Ihrer Meinung!</font>";
} 
else { echo "<font face=Verdana size=2 color=red>Sie haben Ihre Meinung schon abgegeben!</font>";
     $vote=fopen($ficdest, "w"); 
     $new_stats=fputs($vote, "$stats[0]|$stats[1]|$stats[2]|$ip|"); 
     fclose($vote); 

} 
}
?>
<!-- Copyright Scriptsez.net Visit http://www.scriptsez.net to get this script for Free -->
<?php
print ("<form method=post>"); 
$old_stats=file($ficdest); 
$stats=explode("|", $old_stats[0]);
$total=($stats[1]+$stats[2]);
if($total<="0"){
$total="1";
$mtotal="Bisher noch nicht abgestimmt";
}else{
    if($total=="1"){$spell="Abstimmung";}else{$spell="Abstimmungen";}
$mtotal="$total $spell";
}
$gpercentage=(($stats[1]/$total)*1000);
$goodp=round(($gpercentage / 10 * 10))/10;
$bpercentage=(($stats[2]/$total)*1000);
$badp=round(($bpercentage / 10 * 10))/10;
echo "<table><tr><td><img src=/images/thumbs_up.gif>$goodp %</td><td> &nbsp; </td><td><img src=/images/thumbs_down.gif>$badp %</td><td>[$mtotal]</td></tr></table>";
echo"<table><tr><td align=center><img src=/images/thumbs_up.gif></td><td><input type=radio name=note value=Good>Gut</td>";
echo"<td align=center><img src=/images/thumbs_down.gif></td><td><input type=radio name=note value=Bad>Schlecht</td>";
print ("<td><input type=hidden name=envoi value=1><input type=submit value=Abstimmen style=background:#ffcc00;border-width:1;Border-color:#ffcc00;></td></tr></table></form></font>");
?>


Also irgendwie funzt das auch gar nicht...

Vielleicht hab ich das auch an der falschen Stelle eingefügt, KP, aber das ist der Fehler der nun auftritt:



ich versteh das einfach nicht..ist mir dann doch ne Stufe zu hoch..alle Pfade sind korrekt, die Ordner bzw. Dateien existieren..Kein Plan:(

->Wer mir das dann programmiert? Dazu gibt es heutzutage genug Seiten, auf denen PHP Scripte kostenlos/kostengünstig angeboten werden...:-)
 
was immer du da änderst, es wird nicht besser, wenn du das verzeichnis vote nicht an der richtigen stelle anlegst !

die datei, in der die daten geschrieben werden sollen kann nicht erzeugt und/oder gelesen werden. da das problem von deinem script abgefangen werden sollte (was es ja auch versucht) tippe ich darauf, dass der ORDNER vote nicht vorhanden ist.
 
Werbung:
Ich habe doch schon mal gesagt, alle Pfade sind korrekt und existieren:-?

EDIT:

Ah....Es existiert im Root Ordner ein /vote.php und ein /vote/vote.php

Wer hat das so kopiert? Wo is mein Mitarbeiter? :(



WER WAR DAS und hat das falsch bzw. doppelt kopiert? -_-

EDIT 3: Also...seltsamerweise geht es jetzt, nachdem ich den Ordner/vote/ in den Ordner geschoben habe, wo die zu votende Datei liegt..sehr mysteriös...
Allerdings bekomm´ich jetzrt die o.g. fehlermeldung, wenn ich versuche, die datei /vote/vote.php aufzurufen...versteh einer PHP...
 
Zuletzt bearbeitet:
Hallo,

was immer du da änderst, es wird nicht besser, wenn du das verzeichnis vote nicht an der richtigen stelle anlegst !
...
Das sehe ich nicht so .... es hat sich was getan an der Fehlermeldung ....

...
... tippe ich darauf, dass der ORDNER vote nicht vorhanden ist.
Richtig ... wenn jetzt unter rookiecup/berichte noch den Ordner vote anlegst und mit Schreibrechten für den Apache versiehst (zumindest auf den späteren Server), bist Du fertig.

Verrätst Du uns dann auch noch, auf welcher WebSeite es soll, damit wir unwesen treiben können? Als Sicher ist schließlich das PHP'chen nicht zu bezeichnen ... im Gegenteil :lol:

Gruß,
Jumper, the II.
 
Oh man, das Internet ist unfair...Monatelang war meine Wunschdomain frei, und jetzt, 2 Tage, bevor ich meine registrieren will, klaut mir die jemand weg..alter Schwede ich werd´nicht mehr !!:-?

sorry, musste ich aber einfach loswerden...
 
Werbung:
Status
Für weitere Antworten geschlossen.
Zurück
Oben