BlackBoard (http://www.black-board.net/index.php)
- Design, Programmierung & Entwicklung (http://www.black-board.net/board.php?boardid=55)
-- Programmieren (http://www.black-board.net/board.php?boardid=4)
--- PHP Variablen im Query-String holen? (http://www.black-board.net/thread.php?threadid=12741)


Geschrieben von xx08xx15 am 01.07.2003 um 14:22:

  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



Geschrieben von BlackEye am 01.07.2003 um 14:50:

 

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 !



Geschrieben von xx08xx15 am 01.07.2003 um 14:54:

 

Richtig so ??



Geschrieben von 000woodworker000 am 01.07.2003 um 22:26:

 

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.



Geschrieben von xx08xx15 am 01.07.2003 um 23:44:

 

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 !!



Geschrieben von Black Star am 01.07.2003 um 23:56:

 

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.



Geschrieben von xx08xx15 am 02.07.2003 um 00:01:

 

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 !



Geschrieben von Black Star am 02.07.2003 um 00:10:

 

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 Augenzwinkern )



Geschrieben von xx08xx15 am 02.07.2003 um 00:26:

 

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 Augenzwinkern )



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 !



Geschrieben von Compuholic am 02.07.2003 um 12:11:

 

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.



Geschrieben von 000woodworker000 am 02.07.2003 um 12:22:

 

diese funktion ist einfach nur schlehct.

ich wollte si mal so abändern das sie funktioniert aber ich gleube ein kompleter rewrite wäre da besser.

achso und nochwas. warum heist das eignetlich IP sperre???
ich sehe da nirgend wo IP Abfrage



Geschrieben von xx08xx15 am 02.07.2003 um 12:37:

 

warum das Ip speere heist weil es mal eine war und ich diese abändern möchte zu einer user speere!



Geschrieben von 000woodworker000 am 02.07.2003 um 12:39:

 

dann programiere sie lieber neu.

und nimm mysql das ist besser als die langsamen zugriffe auf dateien



Geschrieben von xx08xx15 am 02.07.2003 um 12:42:

 

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 !



Geschrieben von Alex am 02.07.2003 um 13:05:

 

Also wenn du eine Variable per URL (..?id=ronny) dann musst du es mit $_GET[] rauslesen.
Also so hier: $blabla = $_GET['id'];



Geschrieben von xx08xx15 am 02.07.2003 um 13:23:

 

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 ??



Geschrieben von Compuholic am 02.07.2003 um 16:00:

 

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(000); 
$fpIP fopen('irgendeinedatei.log''r');
$remIP $_SERVER['REMOTE_ADDR'];
        
while (!feof($fpIP))
{
        $IPList[2] = $IPList[1];
        $IPList[1] = $IPList[0];
        $IPList[0] = chop(fgets($fpIP4096));
}
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'];



Geschrieben von HeaD am 18.07.2003 um 00:12:

 

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 Augen rollen oda versteh ich das grad bissl falsch ???



Geschrieben von phlox81 am 18.07.2003 um 17:58:

 

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


Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH