Funktion erlaubt kein return true;
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aufruf
bleiben
check
code
datei
datensatz
datum
einbinden
email
fehler
funktion
index
kram
muster
problem
session
speichern
status
url
verwarnung
-
Hallo zusammen,
ich habe ein PHP-Script, was irgendwie ganz komisch ist:
function check_ver($ID) { [...] return ($count < 3); }
Anmerkung: $count ist immer anders
$ver = //check_ver($row['id']); if (mysql_num_rows($result)==1 AND $ver){
Sobald der return Wert true ist, kommt diese Meldung:
Fatal error: Cannot redeclare check_ver() (previously declared in /home/w[..]/home.con.php:4) in /home/w[..]/home.con.php on line 33
In Zeile 4 wird die funktion deklariert und in Zeile 33 mit } geschloßen.
Irgendwie blicke ich da nicht durch...
mfg,
askarian -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
askarian schrieb:
Zeig doch den gesamten Code her... so kann man sich nicht gerade viel vorstellen.
Fatal error: Cannot redeclare check_ver() (previously declared in /home/w[..]/home.con.php:4) in /home/w[..]/home.con.php on line 33
In Zeile 4 wird die funktion deklariert und in Zeile 33 mit } geschloßen. -
So weit ich mich nicht irre bedeutet die Fehlermeldung, dass du die Funktion zweimal deklariert (mit gleichem Namen) hast in deinem Code weswegen das Parsen abgebrochen wird.
Edit:
Du kannst das durch umbennen lösen oder durch include_once()
Beitrag zuletzt geändert: 25.7.2012 20:12:47 von batleth -
Ok, der gesammte Code:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117<?php
function
check_ver(
$ID
) {
$sql
= "SELECT
playername
FROM
accounts
WHERE
id =
'".$ID."'
";
$result
= mysql_query(
$sql
) OR di(
"<pre>\n"
.
$sql
.
"</pre>\n"
.mysql_error());
$row
= mysql_fetch_assoc(
$result
);
$user
=
$row
[
'playername'
];
$sql2
= "SELECT SUM(`
count
`) AS ver
FROM
verwarnungen
WHERE
user=
'".$user."'
";
$result2
= mysql_query(
$sql2
) OR
die
(mysql_error());
$row2
= mysql_fetch_assoc(
$result2
);
$count
= 0;
$count
=
$row2
[
'ver'
];
return
(
$count
< 3);
}
//GET
$status
=
""
;
if
( !
empty
(
$_POST
[
'user'
]) && !
empty
(
$_POST
[
'pw'
])
/*AND !isset($_SESSION['vlogin'])*/
) {
if
(SID !=
""
) {
// SID ungleich Leerstring
$status
=
"Bitte schalte Cookies ein!"
;
}
else
{
$muster
=
"/^[a-zA-Z0-9-_.]{5,15}$/"
;
@
$user
= trim(
$_POST
[
'user'
]);
$pw
= trim(
$_POST
[
'pw'
]);
if
(preg_match(
$muster
,
$user
) == 0) {
$status
=
"Das ist kein gültiger Username. "
;
}
if
(preg_match(
$muster
,
$pw
) == 0) {
// Passwort-Check
$status
.=
"Das ist kein gültiges Passwort."
;
}
else
{
$pw
= md5(
$pw
);
}
if
(
empty
(
$status
)) {
// Falls der Nickname und das Passwort Übereinstimmen..
$sql
= "SELECT
id
FROM
accounts
WHERE
playername =
'".mysql_real_escape_string($user)."'
AND
password =
'".$pw."'
";
$result
= mysql_query(
$sql
) OR di(
"<pre>\n"
.
$sql
.
"</pre>"
);
// wird die ID des Users geholt und der User damit eingeloggt
$row
= mysql_fetch_assoc(
$result
);
//Verwarnungen?
$ver
= check_ver(
$row
[
'id'
]);
// Prüft, ob wirklich genau ein Datensatz gefunden wurde
if
(mysql_num_rows(
$result
)==1 AND
$ver
){
doLogin(
$row
[
'id'
], false);
}
elseif
(!
$ver
){
$CONTENT
= show_l(
"<font color='red'>Du wurdest nicht gesperrt! - <a href='http://askarian.net'>Klicke hier, um zum normalen askarian zu kommen</a></font></br>"
);
}
else
{
$CONTENT
= show_l(
"<font color='red'>Username oder Passwort fehlerhaft!!!</font></br>"
);
}
}
else
{
$CONTENT
= show_l(
"<font color='red'>"
.
$status
.
"</font></br>"
);
}
}
}
else
{
$CONTENT
= show_l(
""
);
}
/*if(is_array($GET) AND $GET[1]=="send" AND isset($_POST['email']) AND isset($_POST['password'])){
$sql = "SELECT
ID
FROM
User
WHERE
email = '".mysql_real_escape_string(trim($_POST['email']))."' AND
Passwort = '".md5(trim($_POST['password']))."'
";
$result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
// wird die ID des Users geholt und der User damit eingeloggt
$row = mysql_fetch_assoc($result);
// Prüft, ob wirklich genau ein Datensatz gefunden wurde
if (mysql_num_rows($result)==1){
doLogin($row['ID'], isset($_POST['Autologin']));
include "workspace.con.php";
}
else{
$CONTENT = show_l("<font color='red'>Email oder Passwort fehlerhaft!!!</font></br>");
}
}else{
$CONTENT = show_l("");
}*/
function
show_l(
$error
){
return
<<<CCC
Hier wäre das layout
CCC;
}
?>
Nur leicht gekürzt...
Beitrag zuletzt geändert: 26.7.2012 17:41:22 von askarian -
Ok...
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141<?php
function
check_ver(
$ID
) {
$sql
= "SELECT
playername
FROM
accounts
WHERE
id =
'".$ID."'
";
$result
= mysql_query(
$sql
) OR di(
"<pre>\n"
.
$sql
.
"</pre>\n"
.mysql_error());
$row
= mysql_fetch_assoc(
$result
);
$user
=
$row
[
'playername'
];
$sql2
= "SELECT SUM(`
count
`) AS ver
FROM
verwarnungen
WHERE
user=
'".$user."'
";
$result2
= mysql_query(
$sql2
) OR
die
(mysql_error());
$row2
= mysql_fetch_assoc(
$result2
);
$count
= 0;
$count
=
$row2
[
'ver'
];
return
(
$count
< 3);
}
function
doLogin(
$ID
,
$autologin
= false)
{
// .. indem die aktuelle Session ID in der Datenbank gespeichert wird
$sql
= "UPDATE
accounts
SET
sessionID =
'".mysql_real_escape_string(session_id())."'
,
autologin = NULL
WHERE
id =
'".$ID."'
";
mysql_query(
$sql
) OR di(
"<pre>\n"
.
$sql
.
"</pre>\n"
.mysql_error());
// Wenn 'eingeloggt bleiben' aktiviert wurde
// Daten des Users in der Session speichern
$sql
= "SELECT
playername
FROM
accounts
WHERE
id =
'".$ID."'
";
$result
= mysql_query(
$sql
) OR di(
"<pre>\n"
.
$sql
.
"</pre>\n"
.mysql_error());
$row
= mysql_fetch_assoc(
$result
);
$_SESSION
[
'vUserID'
] =
$ID
;
$_SESSION
[
'vlogin'
] = true;
$_SESSION
[
'vuser'
]=
$row
[
'playername'
];
}
//GET
$status
=
""
;
if
( !
empty
(
$_POST
[
'user'
]) && !
empty
(
$_POST
[
'pw'
])
/*AND !isset($_SESSION['vlogin'])*/
) {
if
(SID !=
""
) {
// SID ungleich Leerstring
$status
=
"Bitte schalte Cookies ein!"
;
}
else
{
$muster
=
"/^[a-zA-Z0-9-_.]{5,15}$/"
;
@
$user
= trim(
$_POST
[
'user'
]);
$pw
= trim(
$_POST
[
'pw'
]);
if
(preg_match(
$muster
,
$user
) == 0) {
$status
=
"Das ist kein gültiger Username. "
;
}
if
(preg_match(
$muster
,
$pw
) == 0) {
// Passwort-Check
$status
.=
"Das ist kein gültiges Passwort."
;
}
else
{
$pw
= md5(
$pw
);
}
if
(
empty
(
$status
)) {
// Falls der Nickname und das Passwort Übereinstimmen..
$sql
= "SELECT
id
FROM
accounts
WHERE
playername =
'".mysql_real_escape_string($user)."'
AND
password =
'".$pw."'
";
$result
= mysql_query(
$sql
) OR di(
"<pre>\n"
.
$sql
.
"</pre>"
);
// wird die ID des Users geholt und der User damit eingeloggt
$row
= mysql_fetch_assoc(
$result
);
//Verwarnungen?
$ver
= check_ver(
$row
[
'id'
]);
// Prüft, ob wirklich genau ein Datensatz gefunden wurde
if
(mysql_num_rows(
$result
)==1 AND
$ver
){
doLogin(
$row
[
'id'
], false);
}
elseif
(!
$ver
){
$CONTENT
= show_l(
"<font color='red'>Du wurdest nicht gesperrt! - <a href='http://askarian.net'>Klicke hier, um zum normalen askarian zu kommen</a></font></br>"
);
}
else
{
$CONTENT
= show_l(
"<font color='red'>Username oder Passwort fehlerhaft!!!</font></br>"
);
}
}
else
{
$CONTENT
= show_l(
"<font color='red'>"
.
$status
.
"</font></br>"
);
}
}
}
else
{
$CONTENT
= show_l(
""
);
}
/*if(is_array($GET) AND $GET[1]=="send" AND isset($_POST['email']) AND isset($_POST['password'])){
$sql = "SELECT
ID
FROM
User
WHERE
email = '".mysql_real_escape_string(trim($_POST['email']))."' AND
Passwort = '".md5(trim($_POST['password']))."'
";
$result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
// wird die ID des Users geholt und der User damit eingeloggt
$row = mysql_fetch_assoc($result);
// Prüft, ob wirklich genau ein Datensatz gefunden wurde
if (mysql_num_rows($result)==1){
doLogin($row['ID'], isset($_POST['Autologin']));
include "workspace.con.php";
}
else{
$CONTENT = show_l("<font color='red'>Email oder Passwort fehlerhaft!!!</font></br>");
}
}else{
$CONTENT = show_l("");
}*/
?>
-
$result = mysql_query($sql) OR di("<pre>\n".$sql."</pre>\n".mysql_error());
Da fehlt auf jeden Fall schonmal ein e.
Das ist so der gröbste Fehler, den ich nach kurzem Überfliegen festgestellt habe. ;)
Aber die Fehlermeldung liest sich mehr so, als würdest du die Datei aus unerfindlichen Gründen mehrfach deklarieren oder einbinden, so wie es ein Vorposter bereits gesagt hat. Hast du das überprüft?
Beitrag zuletzt geändert: 26.7.2012 18:03:02 von adrians -
sebulon schrieb:
kram mal bitte die index.php aus, oder wo du den aufruf machst.
da suchst du mal deine includes auf
/home.con.php
und machst somit das, was dir der batleth vorgeschlagen hat: include once
funktionen überladen geht in PHP nicht...
Hm...jetzt klappt es...Es lag daran, dass home.con.php auch die Startseite war...
Danke allerseits -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage