Uploadsperre - Formular wird trotzdem abgeschickt

hallo,
ich habe versucht in meinen PHP Code der eine MYSQL Tabelle aktualisiert eine Zeitsperre einzubauen. Bei einer anderen Funktion klappt es auch, nur bei dieser nicht.
Jemand eine Idee, woran es liegen könnte?
Gestern hatte es noch funktioniert… heute aber wieder nicht mehr…

Das Formular darf 1 mal pro Tag abgeschickt werden.
Das soll eigentlich durch den timestamp geschützt werden… wird es aber irgendwie nicht mehr.

Stattdessen wird die Spalte immer wieder bei jedem absenden des Formulars addiert.

<?php
	session_start();
	if(isset($_SESSION["login"])) { // Wenn eingeloggt..
		include("header.php");
		include("db.php");
		include("functions.inc.php");
		refresh($_SESSION["login"]); // refresht
		if(anzahl("tabelle WHERE id = '".$_SESSION["login"]."' AND timestamp > '".(time()-84600)."'") <= 1) {
			if(isset($_REQUEST["submit"])) { 
       					$update = mysql_query("UPDATE tabelle Set konto = konto + 2, timestamp = '".time()."' WHERE id = '".$_SESSION["login"]."' AND zahl = 1");
					$update = mysql_query("UPDATE tabelle Set konto = konto + 4, timestamp = '".time()."' WHERE id = '".$_SESSION["login"]."' AND zahl = 2");
					$update = mysql_query("UPDATE tabelle Set konto = konto + 6, timestamp = '".time()."' WHERE id = '".$_SESSION["login"]."' AND zahl = 3");
					$update = mysql_query("UPDATE tabelle Set konto = konto + 8, timestamp = '".time()."' WHERE id = '".$_SESSION["login"]."' AND zahl = 4");
					$update = mysql_query("UPDATE tabelle Set konto = konto + 10, timestamp = '".time()."' WHERE id = '".$_SESSION["login"]."' AND zahl = 5");
		}
		}
		$abfrage = "SELECT * FROM tabelle WHERE id = '".$_SESSION["login"]."' LIMIT 0,1";
		$ergebnis = mysql_query($abfrage);
		while($row = mysql_fetch_object($ergebnis))
		{ // Formular ->
	?>

LG Isa

Dein Denkfehler ist wenn ich es richtig sehe, dass du als Überprüfung sagst wenn der gespeicherte Timestamp größer als time()-84600 ist.
Damit überprüfst du, ob der gespeicherte Timestamp mehr als 24 Stunden zurückliegt, nicht aber, ob er von heute oder früher stammt.
um das zu erreichen musst du entweder die Zeit in Tagen speichern
(Die Tage bekommst du so:)

oder den gespeicherten timestamp erst umrechnen und dann mit dem heutigen Tag vergleichen.

das kollidiert irgendwie mit den funktions

<?php
	function exist($abfrage) { // Funktion um Eintrag auf Existenz zu prüfen!
		$ergebnis3 = mysql_query("SELECT id FROM ".$abfrage);
		if (mysql_fetch_object($ergebnis3)) {
			return true;
		} else {
			return false;
		}
	}
	function anzahl($abfragez) { // Gibt Anzahl zurück
		$ergebnis = mysql_query("SELECT COUNT(*) AS anzahl FROM ".$abfragez);
		$row = mysql_fetch_array($ergebnis);
		return $row['anzahl']; 
	}
	function refresh($user) { // Refresht refresh. Wichtig bei Wer-ist-eingeloggt!
		$update = mysql_query("UPDATE mitglieder Set refresh = '".time()."' WHERE id = '".$user."'"); 
	}
	function endung($filename) { // Gibt endung der Datei zurück z.B. .gif
		$end = explode(".",$filename);
		return ".".$end[(count($end)-1)];
	}
	function post($string) { // Macht den String sicher und macht \n in <br>
		$string = strip_tags($string);
		return str_replace("\n", "<br>",$string);;
	}
	function postback($string) { // <br> in \n für textarea
		return str_replace("<br>", "\n",$string);;
	}
	function zahl($zahl) { // Zahlenschutz wegen Seitenfunktion
		$zahl = round($zahl,0);
		$zahl = str_replace("-", "", $zahl);
		return $zahl;
	}
?>

Dieser code ist nicht sicher:

Es müsste z.b so sein:

Ich denke mal, dass du statt time() - 84600, time() - 24*3600 nehmen solltest…

Typisch Giatu-tutorials…

nein.
Funktioniert leider auch nicht.

Moin,

mich stören ja die " bei der Session-Angabe in der MySQL-Abfrage …

$update = mysql_query("UPDATE tabelle Set konto = konto + 2, timestamp = '".time()."' WHERE id = '".$_SESSION["login"]."' AND zahl = 1");
// schreib mal stattdessen, folgendes:
$update = mysql_query("UPDATE tabelle SET konto = konto+2, timestamp = 'time()' WHERE id = $_SESSION['login'] AND zahl = 1");

und schreib mal am besten in die index.php ganz oben error_reporting(E_ALL);
Also ich hab ja den Verdacht, dass da irgendwo was mit den Anführungszeichen nicht hinhaut … der Code ist aber auch sehr wirr :wink:

MfG
myPages

also das Update funktioniert ja… ist auch spezifisch nach zahl … ^^
was nicht funktioniertt ist die 24stunden sperre

Wo soll da bitte der Unterschied sein? 24*3600=84600 ==> keine Änderung.

Was meinst du damit?

ich hatte es entsprechend abgeändert.
das hat aber zu einer fehlfunktion der funktions geführt

}
function anzahl($abfragez) { // Gibt Anzahl zurück
$ergebnis = mysql_query("SELECT COUNT(*) AS anzahl FROM ".$abfragez);
$row = mysql_fetch_array($ergebnis);
return $row[‘anzahl’];

ich denke mal darin liegt auch das problem des script, weil anzahl die einträge der tabelle zählt und nicht das was in einer tabellenspalte steht…

Nur habe ich keine Ahnung wie ich das ganze umschreiben müsste, damit es klappt :frowning:

Huhu,
niemand eine Idee.
Wenn jemand eine Alternative hätte, das würde mir auch schon sehr weiterhelfen.
Finde nämlich auch über Suchmaschinen und Tutorials keine Hilfe :frowning:

Moin,

ich war leider ein paar Tage verhindert, darum melde ich mich erst jetzt wieder zu Wort :wink:

In der Theorie müsstest du ja den Timestamp, wann die Session startet, innerhalb der Session abspeichern und diesen dann hinterher, mit der Zeit abgleichen.

session_start();
$_SESSION["zeit"] = time();
if($_SESSION["zeit"]*24*3600 >= time()) // 24h vergangen
{ // irgendwas
} else {
// keine 24h vergangen, also etwas anderes }

Soweit mal der theorethische Ansatz. (Falls ich da Fehler drin habe, bitte Bescheid sagen :smiley:)

Du sagtest oben, dass du auch ein anderes Script hast, wo das ohne Probleme formuliert. Inwiefern wird es denn da gelöst? Man muss das Rad nicht immer neu erfinden :wink:

MfG
myPages

how to make limit if we add upload image script?

Good morning imzers,

you may count the files of the uploading person or limit the upload fields in the formular. I’d ask you to create a new thread in this board area because your problem is different to the one in this thread.

Unfortunately I can’t understand your problem completely at the moment so you may create a new thread and go in more details. I’m sure it would make it easier to help you.

Kind regards
myPages