php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 24-02-2011, 16:04
kalle801
 Registrierter Benutzer
Links : Onlinestatus : kalle801 ist offline
Registriert seit: Nov 2005
Beiträge: 4
kalle801 ist zur Zeit noch ein unbeschriebenes Blatt
Standard Array Problem, brauche hilfe :(

Guten Tag.

Ich habe hier ein Einkaufs script für meinen Server.

Er ging bis vor kurzem einwandfrei, aber dann kam ein Plesk Update, und seit dem gehts nicht mehr

Folgender fehler wird angezeigt:

Warning: Invalid argument supplied for foreach() in C:\Inetpub\vhosts\domain-test.tk\httpdocs\Shop\purchase.php on line 18

Warning: Invalid argument supplied for foreach() in C:\Inetpub\vhosts\domain-test.tk\httpdocs\Shop\purchase.php on line 80
Also beide fehler verweisen auf: [foreach($purchase AS $key => $value);]

Hier ein test zugang zum shop:
http://domain-test.tk/Shop/mall_login.php

User: demo
Passwort: demo



Ich habe hier mal das gesamte Porblem script gelistet:
Es ist eine .php datei von mehreren, aber nur diese hat anscheinend das problem.

Ich weiss, das ein array fehlt, oder benötigt wird, jedoch weiss ich nicht genau was, denn ich bin eher neu in der .php brange
PHP-Code:
<?php

//SID Check ausfuehren => Datenbankverbindung wird aufgebaut und Sprachauswahl gesetzt  
include "sid_check.php";

//UserUID aus Sessions Tabelle holen  
$query_UID "SELECT UserUID FROM MallSessions WHERE sid = '$cook_sid_escaped'";
$result_UID mssql_query($query_UID);
$array_UID mssql_fetch_array($result_UID);
$user_UID $array_UID['UserUID'];

//String mit den Einkaeufen wieder zum Array aufblaehen
$purchase unserialize($_POST['purchase']);


//Durchs Array turnen und aufloesen wo das Item ein Paket ist, das Ganze schoen aufgedroeselt in ein dreidimensionales Array eintueten
$array_row 0;
foreach(
$purchase AS $key => $value);
  {
  
$key ms_escape_string($key);
  
$value ms_escape_string($value);
  
$query_mall "SELECT * FROM GameMall WHERE ItemID = '$key'";
  
$result_mall mssql_query($query_mall);
  while(
$array_mall mssql_fetch_assoc($result_mall))
    {
    
$is_pack $array_mall['PackID'];
    if (!
is_null($is_pack))
      {
      
$query_pack "SELECT * FROM ItemPacks WHERE PackID = '$is_pack'";
      
$result_pack mssql_query($query_pack);
      while(
$array_pack mssql_fetch_assoc($result_pack))
        {
        
$amount $value $array_mall['ItemCount'] * $array_pack['ItemCount'];
        
$buy_array[$array_row] = array(array('ItemID' => $array_pack['ItemID'], 'ItemCount' => $amount));
        
$array_row++;
        }
      }
    else
      {
      
$amount $value $array_mall['ItemCount'];
      
$buy_array[$array_row] = array(array('ItemID' => $array_mall['ItemID'], 'ItemCount' => $amount));
      
$array_row++;
      }
    }
  }

//Schonmal pruefen ob in der GiftBox des Accs ueberhaupt genug freie Slots fuer den Einkauf vorhanden sind
//Wenn nicht => Ausfuehrung beenden
$query_free_slots "SELECT COUNT(Slot) AS slots FROM PS_GameData.dbo.UserStoredPointItems WHERE UserUID = '$user_UID'";
$result_free_slots mssql_query($query_free_slots);
$array_free_slots mssql_fetch_assoc($result_free_slots);
$number_free_slots 240 $array_free_slots['slots'];
$size count($buy_array);
$slots_available $number_free_slots $size;

if (
$slots_available 0)
  {
  if (
$lang_sel == 'en')
    {
    die(
"Not enough free slots in Gift Box available. <br><br><a href=\"mall.php\">Showroom</a>");
    }
  else
    {
    die(
"Nicht gen&uuml;gend freie Slots in der Gift Box verf&uuml;gbar. <br><br><a href=\"mall.php\">Verkaufsraum</a>");    
    }
  }

if (
$lang_sel == 'en')
  {  
  echo 
"<h2>Shaiyaner WebMall - Purchase</h2><br><br>";
  }
else
  {
  echo 
"<h2>Shaiyaner WebMall - Einkauf</h2><br><br>";  
  }
  
//Nochmal durchs 2D Array aus dem POST tanzen fuer die Einkaufshistorie mit den Preisen
//Geht leider nicht beim Einfuegen in die GiftBox weil die Items aus den Pakten keinen eigenen Preis haben :/
$complete_cost =0;
foreach(
$purchase AS $key => $value);
  {
  
$key ms_escape_string($key);
  
$value ms_escape_string($value);
  
$query_mall "SELECT * FROM GameMall WHERE ItemID = '$key'";
  
$result_mall mssql_query($query_mall);
  
$array_mall mssql_fetch_assoc($result_mall);
  
$withdraw = ($value $array_mall['PriceNow']);
  
$query_point "SELECT Point, UserID FROM PS_UserData.dbo.Users_Master WHERE UserUID = '$user_UID'";
  
$result_point mssql_query($query_point);
  
$array_point mssql_fetch_assoc($result_point);
  
$new_balance $array_point['Point'] - $withdraw;
  
$buy_date date('d.m.Y H:i:s');
  
//Nochmal testen ob nicht irgendein Schlauberger nach dem Zusammenstellen des Einkaufs aber vor dem Klicken auf "Kaufen"
  //im Warenkorb noch per Ingame Mall seine DP unter den Einkaufswert gedrueckt hat
  
if ($new_balance 0)
    {
    if (
$lang_sel == 'en')
      {
      die(
"Not enough SP available <br><br><a href=\"mall.php\">Showroom</a>");
      }
    else
      {
      die(
"Nicht gen&uuml;gend SP verf&uuml;gbar <br><br><a href=\"mall.php\">Verkaufsraum</a>");
      }
    }
  
//Wenn SP noch ausreichend fuer Einkauf, Preis von den DP abziehen und Einkaufshistorie schreiben
  
else
    {
    
$update_points "UPDATE PS_UserData.dbo.Users_Master SET Point = '$new_balance' WHERE UserUID = '$user_UID'";
    
mssql_query($update_points) or die("Withdrawing DP failed");
    
$insert_history "INSERT INTO PurchaseHistory (UserUID, ItemID, Price, pdate) VALUES ('$user_UID', '$key', '$withdraw', '$buy_date')";
    
mssql_query($insert_history) or die("Updating Purchase History failed"); 
    }
  if (
$lang_sel == 'en')
    {
    echo 
"Purchase of ".$value." ".$array_mall['ItemTitle']." for ".$withdraw." SP completed.<br>";
    }
  else
    {
    echo 
"Kauf von ".$value." ".$array_mall['ItemTitle']." f&uuml;r ".$withdraw." SP abgeschlossen.<br>";
    }
  
$complete_cost $complete_cost $withdraw;
  }

//Nu aber wirklich einkaufen: Durch 3D Array hampeln, freien GiftBox Slot suchen und Item eintueten
$userslot 0;
for (
$iterate 0$iterate $size$iterate++)
  {
  while(
$userslot 240)
    {
    
$query_slots "SELECT ItemID FROM PS_GameData.dbo.UserStoredPointItems WHERE UserUID = '$user_UID' AND Slot = '$userslot'";
    
$result_slots mssql_query($query_slots);
    
$array_slots mssql_fetch_assoc($result_slots);
    
$is_slot $array_slots['ItemID'];
    if (empty(
$is_slot))
      {
      
$item_count $buy_array[$iterate][0]["ItemCount"];
      
$item_id $buy_array[$iterate][0]["ItemID"];
      
$buy_date date('Y-m-d H:i:s');
      
//Opportunistisch einen Millisekundenwert faken und an den Timestamp kleben. Wer weiss schon wofuer es gebraucht wird ...
      
$buy_date .= ".".rand(100,999);
      
$insert_Item "INSERT INTO 
                        PS_GameData.dbo.UserStoredPointItems (
                        UserUID, 
                        Slot, 
                        ItemID, 
                        ItemCount, 
                        BuyDate)
                       VALUES (
                        '$user_UID', 
                        '$userslot',
                        '$item_id',
                        '$item_count',
                        '$buy_date')"
;
      
mssql_query($insert_Item) or die("Inserting Items failed");
      break 
1;
      }
    
$userslot++;
    }
  }  

//Gesamtpreis und neuen SP Kontostand anzeigen, freundlich bedanken und zu weiterem Einkauf animieren
if ($lang_sel == 'en')
  {
  echo 
"<br>Withdrew $complete_cost DP from your account ".$array_point['UserID'].". <br>Your new SP balance is $new_balance.<br><br>";
  echo 
"<h2>Thank you for your purchase.</h2>";
  echo 
"<br><br><input type=\"button\" onclick=\"window.location.href = 'mall.php'\" value=\"Continue Shopping\">";
  }
else
  {
  echo 
"<br>Es wurden insgesamt $complete_cost SP von Deinem Account ".$array_point['UserID']." abgezogen. <br>Dein neuer SP Kontostand ist $new_balance.<br><br>";
  echo 
"<h2>Danke f&uuml;r Deinen Einkauf.</h2>";
  echo 
"<br><br><input type=\"button\" onclick=\"window.location.href = 'mall.php'\" value=\"Weiter einkaufen\">";
  }
mssql_close($conn);
?>
So, das ist das Script (File), ich hoffe mir kann da jemand helfen.

Liebe Grüße euch allen

Geändert von kalle801 (24-02-2011 um 16:15 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 24-02-2011, 16:05
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist gerade online
Registriert seit: Mar 2008
Beiträge: 3.593
h3ll befindet sich auf einem aufstrebenden Ast
Standard

unserialize() ist ganz ganz böse.

NIEMALS unserialize() auf einen Wert anwenden, der von einem Browser kommt. NIEMALS! Dadurch wurden schon haufenweise Seiten und Server gehackt.
Mit Zitat antworten
  #3 (permalink)  
Alt 24-02-2011, 16:17
kalle801
 Registrierter Benutzer
Links : Onlinestatus : kalle801 ist offline
Registriert seit: Nov 2005
Beiträge: 4
kalle801 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hmm, Vielen dank dafür, gibt es eine alternative die ich einbauen könnte?

Wie gesagt, ich bin ein php anfänger, darum frage ich ja in einem Profi forum
Mit Zitat antworten
  #4 (permalink)  
Alt 24-02-2011, 16:22
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist gerade online
Registriert seit: Mar 2008
Beiträge: 3.593
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Dann lern bitte erstmal die Grundlagen und fang mit einfachen Sachen an.

Willst du ein bestehendes Script repariert/erweitert haben willst, bist du hier falsch.
Mit Zitat antworten
  #5 (permalink)  
Alt 24-02-2011, 16:25
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

an irgendeiner Stelle (außerhalb des geposteten Codes) serialisierst du ja das Purchase und schickst es an den Client (denn ich kann mir nicht vorstellen, dass der Benutzer irgendwo selbst eine serialisierte Datenrepräsentation einhämmern muss). Dann gehst du davon aus, dass dieser diese Daten unmanipuliert wieder an den Server schickt, damit du sie wiederherstellen kannst. Meines Erachtens klingt das ganz klar nach einer Aufgabe, für die Sessions explizit erfunden wurden.

Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #6 (permalink)  
Alt 24-02-2011, 17:20
kalle801
 Registrierter Benutzer
Links : Onlinestatus : kalle801 ist offline
Registriert seit: Nov 2005
Beiträge: 4
kalle801 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich dachte nur, das jemand vieleicht weiss wo das problem ist.


Es muss mir keiner nen neues Script erstellen. ^^
Mit Zitat antworten
  #7 (permalink)  
Alt 24-02-2011, 17:32
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Vermutlich hat der Provider unserialize aus Sicherheitsgründen deaktiviert. Deine Demoseite hab ich ausprobiert, aber da du keinen Vergleich zwischen erwartetem und tatsächlichem Ergebnis aufgestellt hast, kann ich nur sagen, es sieht aus, als ob es bei mir funktioniert.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem mit array(Ich brauche dringend eure Hilfe) braun PHP Developer Forum 4 01-02-2006 20:32
osCommerce Problem brauche Hilfe Tidos Projekthilfe 2 27-08-2004 22:36
Brauche Hilfe bei einem Array Problem markusschmitt PHP Developer Forum 13 16-04-2003 15:08
Problem, brauche Hilfe... mchashi HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 3 05-03-2003 00:39
Big Problem - Brauche sofort hilfe TuBuLuN Projekthilfe 0 30-07-2002 19:52

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 12:05 Uhr.