|
|
|
|
Variablen im Query-String holen? |
xx08xx15
Aufsteiger
Dabei seit: 09.02.2002
Beiträge: 97
Herkunft: Dresden
|
|
Variablen im Query-String holen? |
|
Er schreibt den Usernamen also das was (?id=ronny22)
hinter den = nicht in die Textdatei ausgeben tuht er es den aber !!!
Warum nicht ??
<?
##########################
# (c) 2002 by Ronny Dehmel #
# Mail : webmaster@mydoys.de #
# Url : http://www.mydoys.de #
# IP Sperre von http://www.php4-forum.de #
##########################
$raus = "$id";
// Speicherung der Daten in einer Datei
function schreiben($datei,$mode){
$fp = @fopen($datei,$mode);
flock($fp,2);
fwrite($fp,"$raus"."|".time()."\n");
flock($fp,3);
fclose($fp);
}
function ip_sperre() {
// Einstellungen
$reloadlogdatei = "reload2.txt";
$anzahleintraege = 1000;
$zeitlimit = 600; // in Sekunden
// Prüft, ob Datei existiert => ansonsten Erstellen
if(!file_exists($reloadlogdatei)) {
$datei = fopen($reloadlogdatei,"w+");
fclose($datei);
}
$fp = file($reloadlogdatei);
$size = sizeof($fp);
// Beschreibt die Datei, wenn Liste voll
if($size >= $anzahleintraege){
schreiben($reloadlogdatei,"w");
// Prüft, ob eine IP in der Liste steht
} else {
for ($i=0;$i<$size;$i++) {
$zeile = explode("|",$fp[$i-1]);
// IP wird gefunden
if ($zeile[0] == "$raus" AND $zeile[1] > (time()- $zeitlimit)){
$ausgabe = true;
// IP wird nicht gefunden
} else {
$ausgabe = false;
}
}
// Protokolliert die IP-Adresse (schreibt)
schreiben($reloadlogdatei,"a+");
}
return $ausgabe;
}
$uhrzeit = date("H:i");
$datum = date("d.m.Y");
$url = $HTTP_REFERER;
if(ip_sperre()==true){
echo "
$head\n
$body\n
<br><br><br><br><center><b>
Sie dürfen nicht so oft E-Mails Schreiben Spam Schutz !!
<br><br>
DANKE
";
die();
}
?>
<-------AUSGABE---TEST---->
<? echo $raus ?>
http://www.mydoys.de/test/ip2.php?id=ronny22
http://www.mydoys.de/test/reload2.txt
__________________
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von xx08xx15: 01.07.2003 14:54.
|
|
01.07.2003 14:22 |
|
|
BlackEye
Senior Member
Dabei seit: 24.11.2002
Beiträge: 413
|
|
Gehört zwar nicht zum Thema, aber muss trotzdem sein:
WARUM können sich manche leute einfach nicht daran gewöhnen ihren Threads AUSSAGEKRÄFTIGE (!!) Titel zu geben! Vielleicht würdest du so die antwort schneller bekommen !
|
|
01.07.2003 14:50 |
|
|
xx08xx15
Aufsteiger
Dabei seit: 09.02.2002
Beiträge: 97
Herkunft: Dresden
Themenstarter
|
|
Richtig so ??
__________________
|
|
01.07.2003 14:54 |
|
|
xx08xx15
Aufsteiger
Dabei seit: 09.02.2002
Beiträge: 97
Herkunft: Dresden
Themenstarter
|
|
Zitat: |
Original von 000woodworker000
1. gewöhne dir an nciht mit <? sondern mit <?php zu arbeiten.
2. hast du schreibrechte auf die datei???
3. woher soll die funktion schreiben denn den wert $raus haben??? der wird nciht mit übergeben oder per global befehl in die funktion importiert. |
1. Ok mache ich
2. Ja (Rechte 777)
3.
Wenn mann die datei aufruft datei.php?id=ronny
Dann kommt der wert $raus !
Und der soll in die datei geschrieben werden in die .txt datei und wenn der user die datei datei.php?id=ronny nochmal aufruft soll halt der fehler kommen das er das nicht darf und das kommt halt nicht !!
__________________
|
|
01.07.2003 23:44 |
|
|
xx08xx15
Aufsteiger
Dabei seit: 09.02.2002
Beiträge: 97
Herkunft: Dresden
Themenstarter
|
|
Zitat: |
Original von Black Star
also in perl ist das nicht so einfach, und in php mit sicherheit auch nicht.
dieses ?id=ronny ist ein post-parameter, und den must du erst holen.
so in der art
$raus = param('id');
aber da bin ich mir nicht sicher.
guck mal bei www.selfhtml.teamone.de in der php-referrenz. |
Es geht auch nicht und auf der seite kann er nix finden !
__________________
|
|
02.07.2003 00:01 |
|
|
xx08xx15
Aufsteiger
Dabei seit: 09.02.2002
Beiträge: 97
Herkunft: Dresden
Themenstarter
|
|
Zitat: |
Original von Black Star
oh mann.
ich hab erst einmal in meinem leben php benutzt und was gefunden.
ein bischen mühe sollte man sich schon geben.
$raus = $_POST['id'];
das sollte es sein, und wenn nicht, dann guck selber mal.
programmieren ist 33% googlen. (der wert kann schwanken
) |
Es geht auch damit nicht !!
Der wert der bei id steht soll in die textdatei geschrieben werde :
function schreiben($datei,$mode){
$fp = @fopen($datei,$mode);
flock($fp,2);
fwrite($fp,"$raus"."|".time()."\n");
flock($fp,3);
fclose($fp);
}
Er macht es aber nicht !
__________________
|
|
02.07.2003 00:26 |
|
|
Compuholic
knows where he wants to go tomorrow
Dabei seit: 19.10.2002
Beiträge: 819
Herkunft: München
|
|
Zitat: |
Original von Black Star
$raus = $_POST['id'];
|
Doch in PHP ist das viel leichter:
Wenn in der php.ini die Option register_globals = on ist, werden alle übergebenen Parameter automatisch als Variablen registriert. Wenn ich also einen Parameter der Form ?id=1234 habe dann ist in diesem Fall im Script eine Variable $id mit dem Wert 1234 verfügbar.
Aber ich kann dir sagen, warum es nicht funktioniert:
Wenn du eine globale Variable $raus hast und in einer Funktion die Variable $raus benutzt, dann wird eine neue Variable mit dem gleichen Namen definiert, die nur innerhalb der Funktion gültig ist. In deinem Fall wird einfach eine neue (leere) Variable mit dem Namen $raus erzeugt.
Um globale Variablen innerhalb von Funktionen zu benutzt mußt du "global" als Präfix nehmen. Beispiel:
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
|
function schreiben($datei,$mode){
global $raus;
$fp = @fopen($datei,$mode);
flock($fp,2);
fwrite($fp,"$raus"."|".time()."\n");
flock($fp,3);
fclose($fp);
}
|
|
Es sei aber angemerkt, daß das schlechter Programmierstil ist. Der Sinn von Funktionen besteht ja genau darin, daß man einzelne Programmteile vom Hauptprogramm abkapselt, daß der Programmteil völlig eigenständig arbeiten kann. Daher ist es besser, wenn du der Schreiben-Funktion noch eine weitere Variable übergebn würdest: nämlich, was eigentlich zu schreiben ist, anstatt auf globale Werte zurückzugreifen.
|
|
02.07.2003 12:11 |
|
|
000woodworker000
Aufsteiger
Dabei seit: 09.01.2002
Beiträge: 40
Herkunft: Germany
|
|
|
02.07.2003 12:39 |
|
|
xx08xx15
Aufsteiger
Dabei seit: 09.02.2002
Beiträge: 97
Herkunft: Dresden
Themenstarter
|
|
Zitat: |
Original von 000woodworker000
dann programiere sie lieber neu.
und nimm mysql das ist besser als die langsamen zugriffe auf dateien |
Von Mysql habe ich leider keine Anhung und von PHP auch nicht so recht deswegen wollte ich diese IP speere benutzen und daraus eine User sperre zu machen!
Wenn du mir helfen möchte kanst du das gerne tuhn !
__________________
|
|
02.07.2003 12:42 |
|
|
Alex
Boardgründer
Dabei seit: 05.07.2001
Beiträge: 814
Herkunft: Hessen
|
|
Also wenn du eine Variable per URL (..?id=ronny) dann musst du es mit $_GET[] rauslesen.
Also so hier: $blabla = $_GET['id'];
__________________ MfG Alex
Die Zeit ist der beste Lehrer - leider tötet Sie alle Schüler
|
|
02.07.2003 13:05 |
|
|
xx08xx15
Aufsteiger
Dabei seit: 09.02.2002
Beiträge: 97
Herkunft: Dresden
Themenstarter
|
|
|
|
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
|
<?
##########################
# (c) 2002 by Ronny Dehmel #
# Mail : [EMAIL]webmaster@mydoys.de[/EMAIL] #
# Url : [URL]http://www.mydoys.de[/URL] #
# IP Sperre von [URL]http://www.php4-forum.de[/URL] #
##########################
$raus = $_GET['id'];
// Speicherung der Daten in einer Datei
function schreiben($datei,$mode){
$fp = @fopen($datei,$mode);
flock($fp,2);
fwrite($fp,"$raus"."|".time()."\n");
flock($fp,3);
fclose($fp);
}
function ip_sperre() {
// Einstellungen
$reloadlogdatei = "reload2.txt";
$anzahleintraege = 1000;
$zeitlimit = 600; // in Sekunden
// Prüft, ob Datei existiert => ansonsten Erstellen
if(!file_exists($reloadlogdatei)) {
$datei = fopen($reloadlogdatei,"w+");
fclose($datei);
}
$fp = file($reloadlogdatei);
$size = sizeof($fp);
// Beschreibt die Datei, wenn Liste voll
if($size >= $anzahleintraege){
schreiben($reloadlogdatei,"w");
// Prüft, ob eine IP in der Liste steht
} else {
for ($i=0;$i<$size;$i++) {
$zeile = explode("|",$fp[$i-1]);
// IP wird gefunden
if ($zeile[0] == "$raus" AND $zeile[1] > (time()- $zeitlimit)){
$ausgabe = true;
// IP wird nicht gefunden
} else {
$ausgabe = false;
}
}
// Protokolliert die IP-Adresse (schreibt)
schreiben($reloadlogdatei,"a+");
}
return $ausgabe;
}
$uhrzeit = date("H:i");
$datum = date("d.m.Y");
$url = $HTTP_REFERER;
if(ip_sperre()==true){
echo "
$head\n
$body\n
<br><br><br><br><center><b>
Sie dürfen nicht so oft E-Mails Schreiben Spam Schutz !!
<br><br>
DANKE
";
die();
}
?>
<-------AUSGABE---TEST---->
<? echo $raus ?>
|
|
So habe ich es jetzt !
Ausgeben tuht er es Richtig nur er schreibt es nicht in die Datei !!
Warum ??
__________________
|
|
02.07.2003 13:23 |
|
|
Compuholic
knows where he wants to go tomorrow
Dabei seit: 19.10.2002
Beiträge: 819
Herkunft: München
|
|
Vielleicht hilft Dir ein Auszug von meinem Gästebuch. Ich war auch zu faul, das schrecklich langsame SQL von Tripod zu benutzen und habe das auch mit Dateien gelöst. Der Programmierstil ist auch nicht wirklich berauschend und ein Musterbeispiel für Effizienz (ist noch ein relativ altes Code-Bruchstück, das ich einfach recycled habe)
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
|
$postCounter = 0;
$IPList = array(0, 0, 0);
$fpIP = fopen('irgendeinedatei.log', 'r');
$remIP = $_SERVER['REMOTE_ADDR'];
while (!feof($fpIP))
{
$IPList[2] = $IPList[1];
$IPList[1] = $IPList[0];
$IPList[0] = chop(fgets($fpIP, 4096));
}
fclose($fpIP);
$IPList[0] = chop($remIP);
if (($IPList[0] == $IPList[1]) && ($IPList[0] == $IPList[2]))
{
return 1;
}
$fpIP = fopen('irgendeinedatei.log', 'a');
fwrite($fpIP, "$remIP\n");
fclose($fpIP); |
|
Zu deinem Problem: Ich bin mir nicht sicher, ob es funktioniert, wenn Du am Ende der Datei den echo-Befehl nochmal in <?php ?> Tags setzt. Schreib ich doch einfach direkt unter den Befehl: $raus = $_GET['id'];
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Compuholic: 02.07.2003 16:05.
|
|
02.07.2003 16:00 |
|
|
HeaD
Hoffnungsloser Sozialfall in Behandlung bei Styx
Dabei seit: 31.08.2001
Beiträge: 4.142
Herkunft: Mama
|
|
entweder versteh ich was falsch oder irgendwas läuft falscht.. versteh ich es richtig ? du übergibst mit id=blahblah die Variable id ins neue Dokument. Und nun willst Du das $raus gleich $id ist ?? weil dann würde eigendlich $raus = $id reichen
oda versteh ich das grad bissl falsch ???
__________________
|
|
18.07.2003 00:12 |
|
|
phlox81
Bote des Lichts und Moderator
Dabei seit: 19.10.2002
Beiträge: 3.028
Herkunft: Irgendwo im Nirgendwo
|
|
Bei PHP kann ich nur die Seite www.php.net empfehlen,
die auch eine Suchfunktion hat, und (fast) jeden php Befehl kennt. (einfach /befehl oder funktionsnamen an das php.net dran hängen)
Devil
__________________ Intelligenz ist eine Illusion des Menschen
phlox81.de | codenode.de
|
|
18.07.2003 17:58 |
|
|
|
|
|
|