anpera.net
https://anpera.dyndns.org/phpbb3/

newday.php - Fatal error: Only variables can be passed
https://anpera.dyndns.org/phpbb3/viewtopic.php?f=34&t=3422
Seite 1 von 1

Autor:  ReaL [ Fr 02 Mär, 2007 16:12 ]
Betreff des Beitrags:  newday.php - Fatal error: Only variables can be passed

Hallo,

seit gestern haben wir ein Problem in der newday.php. Allerdings haben wir an der Datei nichts geändert.

Fehlermeldung:
$this->bbcode_second_pass_code('', '
Fatal error: Only variables can be passed by reference in /www/htdocs/w0079527/newday.php on line 2025')

Und line 2025 sieht so aus:
$this->bbcode_second_pass_code('', 'reset($config['forestfights']);')

Ich vermute zwar, dass der Fehler irgendwo in der common.php liegt, aber ich wüsste einfach nicht wo^^ Und die common.php funktioniert ganz normal/fehlerfrei.

Source ist verlinkt.

Danke für Hilfe im vorraus! :)

Autor:  XxNoahxX [ Di 13 Mär, 2007 17:38 ]
Betreff des Beitrags: 

poste doch mal deine newday datei villeicht ist da vor ja nen fehler(vor line 2025)^^

Autor:  ReaL [ Di 13 Mär, 2007 17:49 ]
Betreff des Beitrags: 

Ist doch im Source. Aber für die faulen: newday.php
(Die Zeile mit dem Fehler hat sich um ~10 Zeilen verschoben.

Vorrübergehend habe ich den Fehler behoben, indem ich diesen Codeblock auskommentiert hab:

[php] // FEHLER!!!!!!! (Die Frage ist wieso...) :(
// für Anpera.net wieder auskommentiert /*
reset($config['forestfights']);
while (list($key,$val)=each($config['forestfights'])){
$config['forestfights'][$key]['left']--;
output("`@Du bekommst eine Extrarunde für die Punkte auf `^{$val['bought']}`@.");
$session['user']['turns']++;
if ($val['left']>1){
output(" Du hast `^".($val['left']-1)."`@ Tage von diesem Kauf übrig.`n");
}else{
unset($config['forestfights'][$key]);
output(" Dieser Kauf ist damit abgelaufen.`n");
}
}
// für Anpera.net wieder auskommentiert */[/php]

Autor:  azraeldemon [ Mi 14 Mär, 2007 10:22 ]
Betreff des Beitrags: 

habt ihr an der lodge.php was geändert?

weil dort kauft mann sich die forestfights

das hier ist der part aus der logde.php der sich um die forestfights dreht

[php]}elseif ($_GET['op']=="forestfights"){
if (!is_array($config['forestfights'])) $config['forestfights']=array();
output("1 Extra Waldkampf pro Tag für 30 Tage kostet 100 Punkte. Du bekommst einen extra Waldkampf an jedem Tag, an dem du spielst.`n");
if($pointsavailable<100){
output("`n`n`\$Du hast nicht genug Punkte!`0");
} else {
addnav("Bestätige Extra Waldkämpfe");
addnav("JA","lodge.php?op=fightbuy");
}
addnav("Zurück zur Jägerhütte","lodge.php");
reset($config['forestfights']);
while (list($key,$val)=each($config['forestfights'])){
//output("Du hast noch {$val['left']} Tage, an denen zu einen zusätzlichen Waldkampf für deine am {$val['bought]} bekommst.`n");
output("Du hast noch {$val['left']} Tage, an denen zu einen zusätzlichen Waldkampf für deine am {$val['bought']} bekommst.`n");
}
}elseif ($_GET['op']=="fightbuy"){
if (count($config['forestfights'])>=5){
output("Du Kannst maximal 5 extra Waldkämpfe haben pro Tag.`n");
}else{
if ($pointsavailable>0){
array_push($config['forestfights'],array("left"=>30,"bought"=>date("M d")));
output("Du wirst in den nächsten 30 Tagen, an denen du spielst, einen extra Waldkampf haben.");
$session['user']['donationspent']+=100;
}else{
output("Extra Waldkämpfe zu kaufen kostet 100 Punkte, aber du hast nicht so viele.");
}
}
addnav("Zurück zur Jägerhütte","lodge.php");[/php]

Autor:  Eliwood [ Mi 14 Mär, 2007 16:48 ]
Betreff des Beitrags: 

Machen wir ne Krücke...

[php]// FEHLER!!!!!!! (Die Frage ist wieso...) Sad
if(!empty($config['forestfights']) AND is_array($config['forestfights']))
reset($config['forestfights']);
while (list($key,$val)=each($config['forestfights'])){
$config['forestfights'][$key]['left']--;
output("`@Du bekommst eine Extrarunde für die Punkte auf `^{$val['bought']}`@.");
$session['user']['turns']++;
if ($val['left']>1){
output(" Du hast `^".($val['left']-1)."`@ Tage von diesem Kauf übrig.`n");
}else{
unset($config['forestfights'][$key]);
output(" Dieser Kauf ist damit abgelaufen.`n");
}
}
[/php]

... Obwohl. Die Frage ist wohl berechtigt: Was bitte habt ihr gedreht? O.o 5 Zeilen vorher wird ja bereits der Fall berücksichtigt, falls das array keines sein sollte. Aber irgendwie gehts nicht O.o

Autor:  ReaL [ Mi 14 Mär, 2007 18:04 ]
Betreff des Beitrags: 

Erstmal danke für die Hilfe, Eliwood und azraeldemon!

@azraeldemon
Der Abschnitt ist in meiner lodge.php genauso, hab ihn trotzdem mal mit dem ersetzt, was du gepostet hast. Ist leider auch keine Lösung...

@Eliwood
Ich hab den Code mal eingebaut, aber immer noch der gleiche Fehler:
$this->bbcode_second_pass_code('', 'Fatal error: Only variables can be passed by reference in /www/htdocs/w0079527/newday.php on line 2038')

Line 2038:[php]while (list($key,$val)=each($config['forestfights'])){[/php]

:/

Autor:  Seto [ Mi 14 Mär, 2007 19:14 ]
Betreff des Beitrags: 

öffne newday.php
suche [php]
reset($config['forestfights']);
[/php]

füge davor ein
[php]
$config = unserialize($session['user']['donationconfig']);
if (!is_array($config['forestfights'])) $config['forestfights']=array();[/php]

dann müsste es eigentlich wieder funktzen

Gruß Seto :wink:

Autor:  Kamui [ Mi 14 Mär, 2007 19:20 ]
Betreff des Beitrags: 

@Seto: Der Codeteil den du grade gepostet hast ist schon im Standart enthalten ;)

Autor:  Seto [ Mi 14 Mär, 2007 19:21 ]
Betreff des Beitrags: 

iw aber wenn ich mich da grad nicht verlesen habe fehlt das bei real.

Autor:  Kamui [ Mi 14 Mär, 2007 19:25 ]
Betreff des Beitrags: 

In der Datei selbst fehlt es nicht sonst wäre der Fehler ja wohl logisch aber hier in dem Teil den er gepostet hat ist es nur nicht vorhanden

Autor:  Eliwood [ Mi 14 Mär, 2007 20:39 ]
Betreff des Beitrags: 

ReaL hat geschrieben:
@Eliwood
Ich hab den Code mal eingebaut, aber immer noch der gleiche Fehler:
$this->bbcode_second_pass_code('', 'Fatal error: Only variables can be passed by reference in /www/htdocs/w0079527/newday.php on line 2038')

Line 2038:[php]while (list($key,$val)=each($config['forestfights'])){[/php]

:/


Okay. Zeit fürn' bissel Debugging, am besten testest das selbst mit nem Admincharakter:

[php]if($session['user']['superuser']) var_dump($config['forestfights']);[/php]

Gib mir dann die Ausgabe. Achja: Solltest du compress_out anhaben (Funktion page_footer()), bitte die Stelle Kommentieren (echo compress_put($output)), dafür die Stelle "echo $output" entkommentieren.

Autor:  ReaL [ Mi 14 Mär, 2007 21:08 ]
Betreff des Beitrags: 

Auch allen andere danke für die Hilfe!

@Eliwood:
Die Ausgabe ist einfach:
$this->bbcode_second_pass_code('', 'NULL')
Ich hoffe das hilft, ich weiß nämlich nicht wirklich was damit anzufangen^^

Autor:  Eliwood [ Mi 14 Mär, 2007 21:54 ]
Betreff des Beitrags: 

ReaL hat geschrieben:
Auch allen andere danke für die Hilfe!

@Eliwood:
Die Ausgabe ist einfach:
$this->bbcode_second_pass_code('', 'NULL')
Ich hoffe das hilft, ich weiß nämlich nicht wirklich was damit anzufangen^^


Oh. Ich hätte vielleicht erwähnen sollten dass ich das gerne vor dem hier stehen habe:

[php]while (list($key,$val)=each($config['forestfights'])){ [/php]
^^"

Autor:  ReaL [ Mi 14 Mär, 2007 22:00 ]
Betreff des Beitrags: 

Okay, dann kommt das hier:
$this->bbcode_second_pass_code('', 'string(1) "A"')

Autor:  Eliwood [ Mi 14 Mär, 2007 22:16 ]
Betreff des Beitrags: 

ReaL hat geschrieben:
Okay, dann kommt das hier:
$this->bbcode_second_pass_code('', 'string(1) "A"')


Jetzt ersetzt du mal:
[php]$config = unserialize($session['user']['donationconfig']);
if (!is_array($config['forestfights'])) $config['forestfights']=array();

// FEHLER!!!!!!! (Die Frage ist wieso...) :(
if(!empty($config['forestfights']) AND is_array($config['forestfights']))
reset($config['forestfights']);
if($session['user']['superuser']) var_dump($config['forestfights']);
while (list($key,$val)=each($config['forestfights'])){
$config['forestfights'][$key]['left']--;
output("`@Du bekommst eine Extrarunde für die Punkte auf `^{$val['bought']}`@.");
$session['user']['turns']++;
if ($val['left']>1){
output(" Du hast `^".($val['left']-1)."`@ Tage von diesem Kauf übrig.`n");
}else{
unset($config['forestfights'][$key]);
output(" Dieser Kauf ist damit abgelaufen.`n");
}
}[/php]

Mit

[php]$config = unserialize($session['user']['donationconfig']);
if (!is_array($config['forestfights'])) $config['forestfights']=array();

// FEHLER!!!!!!! (Die Frage ist wieso...) :(
if(!empty($config['forestfights']) AND is_array($config['forestfights'])) {
if($session['user']['superuser']) var_dump($config['forestfights']);

reset($config['forestfights']);
while (list($key,$val)=each($config['forestfights'])){
$config['forestfights'][$key]['left']--;
output("`@Du bekommst eine Extrarunde für die Punkte auf `^{$val['bought']}`@.");
$session['user']['turns']++;
if ($val['left']>1){
output(" Du hast `^".($val['left']-1)."`@ Tage von diesem Kauf übrig.`n");
}else{
unset($config['forestfights'][$key]);
output(" Dieser Kauf ist damit abgelaufen.`n");
}
}
}[/php]

Und gibst mir erneut die Ausgabe.

Autor:  ReaL [ Do 15 Mär, 2007 07:15 ]
Betreff des Beitrags: 

Damit funktionierts! Danke!
Und was hast du jetzt genau geändert?^^

Danke nochmal an alle, die mir geholfen haben/es versucht haben, und besonders auch an Seto!

Autor:  Eliwood [ Do 15 Mär, 2007 17:23 ]
Betreff des Beitrags: 

ReaL hat geschrieben:
Damit funktionierts! Danke!
Und was hast du jetzt genau geändert?^^

Danke nochmal an alle, die mir geholfen haben/es versucht haben, und besonders auch an Seto!


Hab die Klammern um den Block vergessen zu schreiben, das hab ich nun nachgeholt *hust*
Die Zeile mit dem var_dump() kannst du weglöschen. Jetzt bleibt nur noch die Frage ob es wirklich funktioniert. Ich meine, wenn man Bonuswaldkämpfe hat... ^^

Autor:  ReaL [ Do 15 Mär, 2007 21:41 ]
Betreff des Beitrags: 

Das kann ich leider gerade nicht testen, da bei der lodge.php der gleiche Fehler kommt, wie er in der newday.php war, wenn man Waldkämpfe kaufen will...

[php]}elseif ($_GET['op']=="forestfights"){
if (!is_array($config['forestfights'])) $config['forestfights']=array();
output("1 Extra Waldkampf pro Tag für 30 Tage kostet 100 Punkte. Du bekommst einen extra Waldkampf an jedem Tag, an dem du spielst.`n");
if($pointsavailable<100){
output("`n`n`\$Du hast nicht genug Punkte!`0");
} else {
addnav("Bestätige Extra Waldkämpfe");
addnav("JA","lodge.php?op=fightbuy");
}
addnav("Zurück zur Jägerhütte","lodge.php");
reset($config['forestfights']);
while (list($key,$val)=each($config['forestfights'])){
//output("Du hast noch {$val['left']} Tage, an denen zu einen zusätzlichen Waldkampf für deine am {$val['bought]} bekommst.`n");
output("Du hast noch {$val['left']} Tage, an denen zu einen zusätzlichen Waldkampf für deine am {$val['bought']} bekommst.`n");
}
}elseif ($_GET['op']=="fightbuy"){
if (count($config['forestfights'])>=5){
output("Du Kannst maximal 5 extra Waldkämpfe haben pro Tag.`n");
}else{
if ($pointsavailable>0){
array_push($config['forestfights'],array("left"=>30,"bought"=>date("M d")));
output("Du wirst in den nächsten 30 Tagen, an denen du spielst, einen extra Waldkampf haben.");
$session['user']['donationspent']+=100;
}else{
output("Extra Waldkämpfe zu kaufen kostet 100 Punkte, aber du hast nicht so viele.");
}
}
addnav("Zurück zur Jägerhütte","lodge.php");[/php]

Falls es hilft:[php]
if($session['user']['superuser']) var_dump($config['forestfights']);[/php]
gibt wieder
$this->bbcode_second_pass_code('', 'string(1) "A" ')
aus.

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/