You are not logged in.

  • Login

1

Sunday, May 13th 2007, 4:11pm

Benutzer sperren: Fehler in Funktion?

Hallo

Hab da ein Problem, das schon schwieriger für mich ist. Und zwar versuche ich in meinem Script user sperren zu können, so dass sie dann die Meldung bekommen, dass sie halt gesperrt sind.

das ist meine function die ich in der funktion.php habe

PHP Quellcode

1
2
3
4
5
6
7
8
9
10
11
function test($id)
{
  if($users['blocked']==1 && $users['blocktime']>=time()) {
   $sperrdauer=date("d.M.Y H:i:s" , $users['blocktime'] );
   $time=date("d.M.Y H:i:s" , time() );
   echo" Ihr Account wurde von einem Administrator gesperrt. <br> Die Sperre dauert bis : $sperrdauer. (Aktuelle zeit beträgt : $time)<br> Bitte wenden sie sich für genauere Informationen an einen Administrator " ;
   session_unregister("userid");
   session_destroy();
 exit();
}
}



Und hier der code den ich in der login php habe zum Prüfen. PS mir wurde es so gesagt das es so funktionieren soll. Jedoch klappt es bei mir nicht

PHP Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
$db->query("SELECT * FROM users  WHERE id='$id';");
$row = $db->fetch();
$row['blocked'];
$row['blocktime'];
 
  if($users['blocked']==1 && $users['blocktime']>=time()) {
   $sperrdauer=date("d.M.Y H:i:s" , $users['blocktime'] );
   $time=date("d.M.Y H:i:s" , time() );
   echo" Ihr Account wurde von einem Administrator gesperrt. <br> Die Sperre dauert bis : $sperrdauer. (Aktuelle zeit beträgt : $time)<br> Bitte wenden sie sich für genauere Informationen an einen Administrator " ;
   session_unregister("userid");
   session_destroy();
  exit();
  }



In der datenbank unter users sind 2 tabellen angelegt einmal mit blocked und blocktime jeweils mit nem wert drine.

Kann mir da jemand helfen?

Gruss Euer Dragon

2

Sunday, May 13th 2007, 4:20pm

Das array $users existiert nicht.
Weder innerhalb der Funktion noch außerhalb,

3

Sunday, May 13th 2007, 4:36pm

jetzt verstech ich garnix mehr

in der cfg sind die arrys vorhanden

4

Sunday, May 13th 2007, 4:59pm

Häh? In der Konfiguration? Wenn sie von irgendwo anders kommen, dann poste mal deren Werte.
Aber eigentlich glaube ich, dass du nur $users durch $row ersetzen musst.

5

Sunday, May 13th 2007, 5:16pm

Du bist ein Engel d0nUt :D

6

Sunday, May 13th 2007, 5:35pm

d0nUt

Leider habe ich da ein selsamen fehler. Undzwar kann ich jetzt sperren jedoch greift es nur bei administratoren anscheinen oder nur auf den ersten user.

Wenn ich ich spere bekomme ich die meldung das ich gespert bin. Sperre ich jedoch einen normalen user kann er sich ohne weitere einlogen. Hast du dazu ne idee?

Hier mal die login.php

PHP Quellcode

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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<?
  error_reporting(E_ALL);
  require("config.inc.php");
  $PATH=$CONFIG['internal']['path'];  
  require("$PATH/mysql.inc.php");
  require("$PATH/config.inc.php");
 
  define('SMARTY_DIR', $CONFIG['internal']['smarty_dir']);
  require(SMARTY_DIR.'Smarty.class.php');
 
  $smarty = new Smarty;
  $smarty->assign("CONFIG_game_name",$CONFIG["game"]["name"]);
  $smarty->assign("CONFIG_internal_serverpath",$CONFIG["internal"]["serverpath"]);
  $smarty->assign("CONFIG_version",$CONFIG["game"]["int_version"]);
 
  session_start();
 
  if(isset($_GET['name']))
  {
    $db = new cl_extended_database;
 
    if($_GET["name"] == $CONFIG["game"]["admin"] || $db->get_system_lock('wartung', '') == '0')
    {
      $id = $db->user_get_id($_GET["name"]);
 
      if($id == -1)
      {
          $smarty->display("login_false.thtml");
          die();
      }
      if($db->user_get_pass($id) != $_GET['pw'])
      {
          $smarty->display("login_false.thtml");
          die();
      }
      $_SESSION["id"] = $id;
    }
    else
    {
        $smarty->display("wartung.thtml");
        die();
    }
  }
    // user Sperren
function blocked($id)
    {
	  $this->query("SELECT * FROM users WHERE id='$id';");
	  $users = $this->fetch();
	  $this->err();
	  return $users['blocked'];
    }
 
$db->query("SELECT * FROM users  WHERE id='$id';");
$users = $db->fetch();
$users['blocked'];
$users['blocktime'];
 
  if($users['blocked']==1 && $users['blocktime']>=time()) {
   $sperrdauer=date("d.M.Y H:i:s" , $users['blocktime'] );
   $time=date("d.M.Y H:i:s" , time() );
   echo" Ihr Account wurde von einem Administrator gesperrt. <br> Die Sperre dauert bis : $sperrdauer. (Aktuelle zeit beträgt : $time)<br> Bitte wenden sie sich für genauere Informationen an einen Administrator " ;
   session_unregister("userid");
   session_destroy();
  exit();
  }
 
  if(isset($_SESSION["id"]))
  {
    if(!isset($db))
    {
      $db = new cl_extended_database;
    }
    $id = $_SESSION["id"];
    if(!isset($_SESSION["name"]))
    {
      $_SESSION["name"] = $db->user_get_name($id); 
    }
    if(isset($_GET['gal']) && isset($_GET['sys']) && isset($_GET['plan']))
    {
      $idp = $db->planets_get_userid($_GET['gal'],$_GET['sys'],$_GET['plan']);
      //echo "ID: $id; IDP: $idp<br>";
 
	  if($user['adstime']>time()) $noads=1;
  else $noads=0;
 
 
      if($idp == $_SESSION['id'])
      {
        $_SESSION['coords']['gal']  = $_GET['gal'];
        $_SESSION['coords']['sys']  = $_GET['sys'];
        $_SESSION['coords']['plan'] = $_GET['plan'];
      }
      else
      {
        //Cheater...   :-)
        echo "<br><br><br><center>Hi Cheater! Sorry - diese Lücke wurde geschlossen!!! :-)</center>";
      }
    }
    else
    {
      $_SESSION['coords'] = $db->planets_get_coords($_SESSION['id']);
    }
 
    $smarty->assign("cv",$_SESSION['coords']);
    $smarty->assign("sessionname",session_name());
    $smarty->assign("sessionid", session_id());
    $smarty->display("login-frame.thtml");
 
  }
  else
  {
    $smarty->display("index.thtml");
  }
 
 
?>



Und die fehlermeldung kommt wenn ich einen anderenplani auswähle

Notice: Undefined variable: db in /var/www/vhosts/dragon.space-server.org/subdomains/uni1/httpdocs/login.php on line 53

Fatal error: Call to a member function query() on a non-object in /var/www/vhosts/dragon.space-server.org/subdomains/uni1/httpdocs/login.php on line 53

7

Sunday, May 13th 2007, 9:28pm

Hab das nun hinbekommen und leüft auch wunderbar aber wenn ich dafür ein extra fomular mache wo hc dann beispielsweise den user und die zeit eintrage wie lange ich ihn sperren möchte macht er das nicht. Ich weiss einfach nicht warum weil eigendlich müsste das so funzen.

hier mal die function in der mysql.php

PHP Quellcode

1
2
3
4
5
6
7
//User Sperren
function sperren($user, $btime)
{
  $btime = time() + $time;
  $user;
  $this->query("UPDATE cc".$n."users SET blocked = '1' , blocktime='$btime' WHERE userid='$user'");
}


hier das in der index_acp.php

PHP Quellcode

1
2
3
4
5
6
7
//User Sperren
if($_GET['action'] == 10) {
$btime = $_GET['btime'];
$user = $_GET['user'];
$db->query("UPDATE cc".$n."users SET blocked = '1' , blocktime='$btime' WHERE userid='$user'");
$smarty->display("acp/acp_sperren.thtml");
}



und hier die thtml datei

HTML Code

1
2
3
4
5
6
7
8
9
10
11
<tr>
<form id="form1" name="form1" method="post" action="index_acp.php?action=10">
    <br />
    <input name="user" type="text" class="form" id="name" value="Username" size="30" />
    Username
    <input name="btime" type="text" class="form" id="time" value="Sperr Zeit" size="15" />
    Stunden
    <input type="submit" name="Submit" value="Senden">
  </form>  
  </td>
 </tr>


Weis einfach nicht warum das nicht geht

Vieleicht habt ihr ne idee

Gruss Dragon

8

Sunday, May 13th 2007, 9:34pm

Selbes Probem: $n ist nicht gesetzt.

Ich würde dir empfehlen das Error Reporting anzuschalten.

PHP Quellcode

1
error_reporting(E_ALL);

9

Sunday, May 13th 2007, 9:41pm

Habs dann so versuch

PHP Quellcode

1
$db->query("UPDATE users SET blocked='1' , blocktime ='$btime' WHERE userid='$user'");


bekomm bei error_reporting diese meldungen

Notice: Undefined index: btime in /var/www/vhosts/dragon.space-server.org/subdomains/uni1/httpdocs/index_acp.php on line 426

Notice: Undefined index: user in /var/www/vhosts/dragon.space-server.org/subdomains/uni1/httpdocs/index_acp.php on line 427

10

Monday, May 14th 2007, 1:37pm

weil es keine GET - sondern POST Variablen sind.
Ob die Variablen Werte haben solltest du schon kontrollieren.

11

Tuesday, May 15th 2007, 8:53am

heh kennst das doch vorallem wenn man selber was schreibt sieht man meist die eigenen fehler nicht:P

Hab da mal eine frage an dich undzwar versuche ich wenn der user gesperrt wird das er die aktuelle urzeit auch in der db gespeichert wird jedoch ohne erfolg. Er legt immer den wert in der tabelle ab 0000-00-00 00:00:00


hab es so versucht mit now(); oder mit time(); leider ohne erfolg. Selbst mit der eigenen Variabel ging es net

PHP Quellcode

1
2
3
4
5
6
7
8
9
$aktuellezeit = +time();
	  $db->user_sperren($id, $name, $blocked, $blocktime, $adminname, $grund, time());
 
 
    $aktuellezeit = +time();
	  $db->user_sperren($id, $name, $blocked, $blocktime, $adminname, $grund, now());
 
    $aktuellezeit = +time();
	  $db->user_sperren($id, $name, $blocked, $blocktime, $adminname, $grund, $aktuellezeit );




und hier die funktion

PHP Quellcode

1
2
3
function user_sperren($id, $name, $blocked, $blocktime, $adminname, $grund, $aktuellezeit)
    {
      $this->query("INSERT INTO users_gesperrt SET id='$id', user='$name', blocked='$blocked', blocktime='$blocktime', grund='$grund', adminname='$adminname', aktuellezeit='$aktuellezeit'");



Hier mal die if schleife

PHP Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if(isset($_GET['sperre_user'])) {
	  //echo "Action: User speeren";
	  print_r($_GET);
	$id = $_GET['Id'];
	$name = $_GET['Name'];
	$blocked = $_GET['blocked'];
	$grund = $_GET['grund'];
	$adminname = $_GET['adminname'];
	$blocktime = $_GET['blocktime'] + time();
    $aktuellezeit = +time();
	  $db->user_sperren($id, $name, $blocked, $blocktime, $adminname, $grund, time());
	  $smarty->assign("change","User");
	  $smarty->assign("art","bearbeitet");
	  $smarty->display("acp/ok.thtml");
	}


Hier das selbe. Da hatte ich es auch mit now(); usw versucht aber entweder bekomme ich nur error meldungen oder es funzt garnix mehr. Das übersteigt ein wenig mein wissen.

Vieleicht hast du ne Idee. :roll:

Gruss Dragon

12

Tuesday, May 15th 2007, 9:09am

Poste mal deine Tabellenstruktur. ;)

13

Tuesday, May 15th 2007, 4:01pm

hi!

hast du denn auch das db feld mit integer typ angelegt? timestamp in mysql != timestamp in php...

funzt also so nicht!

deshalb besser die php time() funktion benutzen und den wert in der db in nem integer feld speichern... beim auslesen mit date() wieder umwandeln

mfg da BendIt

14

Wednesday, May 16th 2007, 2:38pm

Danke

Hat wunderbar geklapt. Max123 hatte mir über icq geholfen.

Gruss

Dragon

Similar threads

Social bookmarks