Sources on this Page

> Headlines by Category

 Home / Technology / Software / Programming Languages / PHP

You are using the plain HTML view, switch to advanced view for a more complete experience.

Getting XML Data Based Off Of URL Parameter

I cannot seem to figure this bit out. I'm trying to load data from an xml file depending on what the value of a url parameter is. I have an attribute set in my xml, but cannot seem to figure out how to go about this. I've looked at several examples of getting the attribute so I'm not sure where I am wrong since I haven't come across an example using url parameters to determine what data should be fetched. Here is what I have so far.

An example of my xml file. There will be more records of piercing in this file.


<piercings><piercing id="default"><title>Piercing Not Specified</title><names>N/A</names><gauge>0</gauge><healing>0</healing><risk>None</risk><description>You must first choose a specific piercing from the menu to view information.</description><aftercare>Aftercare tips will be available once you choose a specific piercing from the menu.</aftercare><avoid>Things you should avoid will be listed once a specific piercing has been chosen.</avoid><img>http://via.placeholder.com/350/000000/676767?text=Not%20Specified</img><additionalimgs><additionalimg>http://via.placeholder.com/350/000000/676767?text=Not%20Specified</additionalimg></additionalimgs></piercing><piercing id="incomplete"><title>Listing Incomplete</title><names>N/A</names><gauge>0</gauge><healing>0</healing><risk>None</risk><description>The listing for this piercing is incomplete. Once completed the data will appear on this page. Please check back later.</description><aftercare>Aftercare tips will be available once you the listing is complete.</aftercare><avoid>Things you should avoid will be listed once the listing is complete.</avoid><img>http://via.placeholder.com/350/000000/676767?text=Incomplete</img><additionalimgs><additionalimg>http://via.placeholder.com/350/000000/676767?text=Incomplete</additionalimg></additionalimgs></piercing><piercing id="antieyebrow"><title>Anti-Eyebrow</title><names>Anti-Eyebrow, Teardrop</names><gauge>16</gauge><healing>6 - 8</healing><risk>Rejection/Migration, Scarring</risk><description>The anti-eyebrow piercing is located on the upper side of the cheek bone right below the orbital socket of the eye. This piercing is most commonly pierced using a 16 gauge curved barbell or custom bent jewelry. This piercing may also be referred to as a teardrop piercing.</description><aftercare>It is recommended with this piercing to clean twice a day using saline solution or antibacterial soap. Do not overclean. Irritation from overcleaning can result in migration of the piercing.</aftercare><avoid>Using rubbing alchohol as a cleaner. Changing the jewelry for atleast 3 weeks although recommended to wait until the piercing is fully healed. Pools/hot tubs especially those with chemical cleaners in them. Swimming holes, creeks, rivers, etc. due to bacterial exposure risk.</avoid><img>http://jessetoxik.com/img/display/stock/antieyebrow_default.jpg</img><additionalimgs><additionalimg>http://jessetoxik.com/img/thumb/stock/antieyebrow_1.jpg</additionalimg><additionalimg>http://jessetoxik.com/img/thumb/stock/antieyebrow_2.jpg</additionalimg><additionalimg>http://jessetoxik.com/img/thumb/stock/antieyebrow_3.jpg</additionalimg></additionalimgs></piercing></piercings>

So for this one I am trying to pull all of the data for the piercing with the attribute of id="antieyebrow". Here is what I tried to retrieve that. URL: http://example.com/piercing.php?location=antieyebrow.


if (file_exists($_SERVER['DOCUMENT_ROOT'].'/info/piercing/piercings.xml')) {$piercingxml = simplexml_load_file($_SERVER['DOCUMENT_ROOT'].'/info/piercing/piercings.xml');$location = $_GET['location'];$piercingid = $piercingxml['id'];}else {$piercingxml = simplexml_load_file($_SERVER['DOCUMENT_ROOT'].'/info/piercing/default.xml');$location = "default";}

And finally to display the data onto the page:

echo $piercingxml->$piercingid[$location]->title;

So far nothing from the file is being displayed. How do I accomplish this?
Any help as to where I went wrong would be greatly appreciated.


PHP Shell Connector (New)
Connect and run remote shell commands using ssh
This class can connect and run remote shell commands using ssh...

Read more at https://www.phpclasses.org/package/10541-PHP-Connect-and-run-remote-shell-commands-using-ssh.html
Contact Form

I am just trying to create a contact form and send it to myself. I get this error when I hit the submit button : Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:xampphtdocspet-shoppet-shopsend-mail.php on line 9

$('#submit').on('click', function(){ // get form values and compose a data string var name = $("#name").val(); var email = $("#email").val(); var message = $("#message").val(); var data ='name=' + name + '&email=' + email + '&message=' + message; // AJAX call passing dataString in POST $.ajax({ type: 'POST', data: data, url: 'send-mail.php', success: function(){ // success callback console.log('message sent! :D'); } }); // prevent the default submit action return false; });


Here is my code: 



<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<title>Contact US</title>
<link rel="stylesheet" href="style.css">
<?php include("includes/header.html");?> 
<form name="my-form" method="POST" action="send-mail.php">  
    <input type="text" id="name" name="name" value="" placeholder="Name" />
    <input type="email" id="email" name="email" value="" placeholder="E-mail" />
    <textarea id="message" name="message"></textarea>
    <input type="submit" id="submit" value="SUBMIT" name="submit" />
<?php include("includes/footer.html");?>   
    $to = "cole.shannon3@gmail.com";
        $name = $_POST['name'];
        $email = $_POST['email'];
        $message = $_POST['message'];
        mail($to, "New message from " . $name, $message, "From: $email" );
$('#submit').on('click', function(){
    // get form values and compose a data string
    var name = $("#name").val();
    var email = $("#email").val();
    var message = $("#message").val();
    var data ='name=' + name + '&email=' + email + '&message=' + message;
    // AJAX call passing dataString in POST
        type: 'POST',
        data: data,
        url: 'send-mail.php',
        success: function(){
            // success callback
            console.log('message sent! :D');
    // prevent the default submit action
    return false;


managing session file separately to include in all file

After logging, session will start. So i have to manage sessions.php in all my other files to manage session . Here is my login file

<?phpif(isset($_POST['submit'])){include("connect.php");$user=mysqli_real_escape_string($con, $_POST['email']);$pass=mysqli_real_escape_string($con, $_POST['password']);$sql="SELECT * FROM users WHERE email='".$user."' AND password='".$pass."' ";$query=mysqli_query($con, $sql) or die(mysqli_error($con));$count=mysqli_num_rows($query);if($count==1){$row=mysqli_fetch_array($query);session_start();$_SESSION['user_id']=$row['uid'];}else {header("location:../index.php?error=1");}if(isset($_SESSION["user_id"])) {header("location:../home.php");}}?>

And in sessions.php

<?phpsession_start();session_regenerate_id();if($_SESSION["user_id"]){include("connect.php");$m1 = "select * from users where uid='".$_SESSION['user_id']."'";$m2 = mysqli_query($con, $m1);$m3 = mysqli_fetch_array($m2);$_SESSION['username'] = $m3['fname'].' '.$m3['lname'];}elseif(!isset($_SESSION['user_id'])){header("location:index.php");}?>

As the session is started in login.php itself, i get error in sessions.php 'Session is already started'. But if i remove session_start();, it redirects to index.php (login form). I am confused.

can somebody help me in this? 

 i have other files like dashboard.php, home.php... in that how do i manage session?

Fast Forward: Symfony-Updates beheben Schwachstellen & neuer Windows 10 Insider Preview Build 17040

Heute im Fast Forward: Neue Symfony-Versionen beheben mehrere Schwachstellen | Windows 10 Insider Preview Build 17040 für PC erschienen | Chatbase: Neue Analytics-Plattform für Chatbots verfügbar | Windows 10 SDK Preview Build 17035 steht bereit | Google geht gegen AMP-Teaser-Seiten vor | Visual Studio Team Services erhalten neue CLI

Neue Symfony-Versionen beheben mehrere Schwachstellen

Mit Symfony 2.7.38, 2.8.31, 3.2.14 und 3.3.13 sind zum dritten Mal diese Woche neue Symfony-Versionen erschienen. Grund dafür sind dieses Mal wichtige Security-Fixes, die gleich mehrere Schwachstellen im Symfony-Core beheben sollen. Gefunden wurden die folgenden vier Schwachstellen, die in den jeweiligen CVE-Logs näher beschrieben werden:

Die neuen Symfony-Versionen stehen auf der Produktseite zum Dowload zur Verfügung.

Windows 10 Insider Preview Build 17040 für PC verfügbar

Das Windows-10-Team rund um Microsoft-Entwicklerin Dona Sarkar hat einen neuen Windows 10 Insider Preview Build veröffentlicht. Der Build mit der Versionsnummer 17040 für PC steht ab sofort allen Windows Insidern im Fast Ring zur Verfügung und ist auch im Skip-Ahead verfügbar. Der Bug, der dazu führte, dass es bei Windows 10 Insider Preview Build 17035 auf PCs mit AMD-Prozessoren zu Problemen kam, scheint für den neuen Build nicht zu bestehen; Build 17040 ist daher uneingeschränkt verfügbar. Zu den Neuerungen zählen unter anderem Setting-Verbesserungen, dank derer Entwickler nun Helligkeitseinstellungen für SDR Content im HDR-Modus vornehmen können. Außerdem mit dabei sind laut der Ankündigung Verbesserungen für das Touch Keyboard und das Hand Panel. Ausführliche Infos zu allen Neuerungen sowie eine Übersicht über die Bug-Fixes bietet der entsprechende Beitrag auf dem Windows-10-Blog.

Chatbase: Neue Analytics-Plattform für Chatbots verfügbar

Chatbase ist eine Cloud-basierte Analytics-Plattform für Chatbots, die von Google entwickelt wurde. Die Analysen von Chatbase sollen bei der Optimierung von Chatbots helfen. So ist es damit beispielsweise möglich, Muster in der Interaktion zwischen Chatbot und Nutzer zu identifizieren, um den Bot-Service gezielt zu optimieren. Dazu kann das neue Tool laut Google mit allen Text- und Voice-Messaging-Services verbunden werden; Analyse-Metriken sind über verschiedene Plattformen hinweg vergleichbar. Chatbase arbeitet zur Identifikation wiederkehrender Probleme mit den Machine-Learning-Services von Google und kann Konversationsverläufe automatisiert visualisieren. Alle Informationen zu Chatbase gibt es im Chatbase-Blog; der Service kann über einen Link dortkostenfrei genutzt werden.

Windows 10 SDK Preview Build 17035 verfügbar

Microsoft hat einen neuen Windows 10 SDK Preview Build veröffentlicht. Der Build mit der Versionsnummer 17035 enthält vor allem Bug-Fixes und noch in Bearbeitung befindliche Änderungen an der API-Oberfläche. In der entsprechenden Ankündigung findet sich der Hinweis, dass das Windows SDK von nun an formell nur noch von Visual Studio 2017 oder neuer unterstützt wird. Im Developer-Bereich auf Windows Insider steht der SDK Preview Build 17035 zum Download zur Verfügung.

Google geht gegen AMP-Teaser-Seiten vor

AMP-Seiten sollen einen schnellen und einfachen Zugang zu Webinhalten auf Mobilgeräten bieten: Das von Google entwickelte Format reduziert den Inhalte von Websites auf das Wesentliche, um die Ladezeiten zu reduzieren. Wie im Google Webmaster Central Blog nachzulesen ist, nutzen inzwischen etwa 25 Millionen Domains diese Option. Nicht jede Seite bietet dabei jedoch den vollen Content der kanonischen Website auch als AMP-Seite an – manche Webmaster nutzen die AMP-Seiten und ihre Platzierung in den Suchergebnissen, um Nutzer auf Teaser-Texte zu locken. Der eigentliche Inhalt ist dann erst mit einem zweiten Klick auf die volle Seite mit längeren Ladezeiten verfügbar. Dieses Verhalten will Google ab dem 1. Februar 2018 allerdings stärker sanktionieren: Künftig muss eine hohe Übereinstimmung der zentralen Inhalte zwischen kanonischer und AMP-Seite bestehen, damit die AMP-Seite in den Suchergebnissen erscheint. Wie Ashish Mehta, Product Manager bei Google, im Webmaster Central Blog aber auch erklärt, wird es eine Warnung für Webmaster über die Search Consol der Webmaster Tools geben, wenn ihre Seite von der verschärften Anwendung der eigentlich nicht neuen Regeln für AMP-Seiten betroffen ist.

Visual Studio Team Services erhalten neue CLI

Wie auf dem Microsoft-DevOps-Blog bekanntgegeben wurde, steht Entwicklern ab sofort ein neues Cross-Plattform Command Line Interface für Visual Studio Team Services (VSTS) und Team Foundation Server (TFS) zur Verfügung. Das CLI, das bisher nur als Preview erhältlich ist, ermöglicht es, mit Pull Requests und Builds zu arbeiten und sie zu managen. Laut Blogpost sollen weitere Commands und Fähigkeiten mit der Zeit hinzu kommen. Zu den Highlights gehört, das das CLI unter Windows, Linux und macOS läuft und außerdem mit dem Git CLI kombinierbar ist. Weitere Infos bietet der oben genannte Blogbeitrag.

Der Beitrag Fast Forward: Symfony-Updates beheben Schwachstellen & neuer Windows 10 Insider Preview Build 17040 ist auf entwickler.de erschienen.

get the results of a simple DOM parser-object - sorted in a better manner - cvs or so
Forum: General Help Posted By: dilbert2010 Post Time: 11-17-2017 at 04:22 AM
Microsoft Cognitive Services und Azure erhalten Updates

Auf dem Entwickler-Event Connect(); 2017 zeigt sich Microsoft weiter in Spendierlaune und beschert Azure und den Cognitive Services einige Neuerungen, darunter eine Preview auf das Azure Storage SDK für Go und zehn neue Sprachen für das Translation API.

Der zweite Event-Tag auf Microsofts Connect(); 2017 steht dem ersten in Sachen Veröffentlichungen und Ankündigungen in nichts nach. An dieser Stelle haben wir die News zusammengetragen.

Neuerungen für Microsoft Azure

Am zweiten Tag der Connect(); hat es zahlreiche Ankündigungen bezüglich Microsoft Azure gegeben. Unter anderem wurde eine Preview auf das Azure Storage SDK für Go veröffentlicht. Laut der Ankündigung auf dem Azure-Blog ist das SDK redesignt und aktualisiert worden und setzt auf Code auf, der von AutoRest, einem Open-Source-Generator für die OpenAPI Specification, generiert wurde.

Außerdem mit dabei waren Updates für Azure DNS, die dem Dienst zur Verwaltung von Domänen Support für Certificate Authority Authorization (CAA) Records sowie IPv6 Nameserver beschert. Ein weiterer Blogeintrag kündigt die baldige allgemeine Verfügbarkeit des Azure CosmosDB Gremlin (Graph) APIs an. Der Service zur Portierung von Graph-Anwendungen soll noch gegen Ende des Jahres seinen Preview-Status ablegen.

Weitere Ankündigungen: Die allgemeinen Verfügbarkeiten von Azure Reserved VM Instances, Apache Spark to Azure CosmosDB Connector und des Azure CosmosDB Table APIs.

Microsoft Cognitive Services

Microsoft Cognitive Services bieten Entwicklern die Möglichkeit, Anwendungen zu entwickeln, die in der Lage sind, anhand natürlicher Kommunikationsmethoden Bedürfnisse zu interpretieren. Im Rahmen der Connect(); 2017 wurden einige Updates für die Services angekündigt. Unter anderem stehen im Translator API zehn neue Sprachen für die Neural Machine Translation zur Verfügung, darunter Bulgarisch, Dänisch, Hindi und Schwedisch. Desweiteren ist der Service nun auch als On-Premises-Service verfügbar.

Zudem wird die Speech Translation ab sofort End-to-End von Long-Short-Term-Technologie (LSTM) angetrieben. Das soll sich direkt auf die Qualität der Maschinenübersetzung auswirken: Je genauer die Spracherkennung ist, desto genauer kann die entsprechende Übersetzung sein.

SQL Server 2017

Auch der SQL Server ging nicht leer aus. Unter anderem wurde die Preview auf SQL Operations Studio angekündigt. Dabei handelt es sich um ein kostenloses, leichtgewichtiges Tools für die moderne Datenbankentwicklung für SQL Server auf u.a. Windows, Linux und Docker, heißt es im entsprechenden Blogeintrag auf dem SQL-Server-Blog. Ausführliche Infos dazu bietet der genannte Blogbeitrag, auf dem das Tool auch zum Download bereit steht.

Der Beitrag Microsoft Cognitive Services und Azure erhalten Updates ist auf entwickler.de erschienen.

Neues Tool container-diff vergleicht Container-Images

Google hat ein neues Tool Open Source gestellt, das die Unterschiede in Container-Images aufspüren kann: container-diff. Entwickler sollen so erkennen können, welche Änderungen im Dockerfile zu welchen Änderungen im Image führen.

Container und das Dockerfile-Format machen es einfacher, die Laufzeitumgebung einer Anwendung zusammenzustellen und zu bauen. Dabei besteht aber die Schwierigkeit, dass es eben nicht so einfach ist, die Änderungen im Container-Image zu visualisieren, die aus einer Änderung im dazugehörigen Dockerfile resultieren können. Das kann zu überfrachteten Images führen und erschwert außerdem das Tracking. Google hat sich mit container-diff genau diesem Problem angenommen.

container-diff: das steckt dahinter

container-diff hilft Anwendern dabei, Änderungen in Images zu untersuchen, indem es die semantischen Änderungen zwischen Images durchleuchtet. Das bedeutet, dass container-diff auf einer niedrigen Ebene herausfindet, welche Daten sich geändert haben. Diese Infos kombiniert das Tool mit den Paketmanager-Informationen. Das Ergebnis sind Informationen in einem Format, das für Anwender auch tatsächlich lesbar ist. Die Informationen lassen sich aber auch in JSON verpacken und so automatisiert in der Pipeline weiterreichen. Das Tool kann Unterschiede in einem Container-Image in Systempaketen, Sprach-Paketen und Dateien  finden.

Anwender können Images in verschiedenen Formaten angeben: vom lokalen Docker-Daemon mit dem Präfix daemon:// auf dem Image-Pfad, einer entfernten Registry mit dem Präfix remote:// oder einer Datei im .TAR-Paket, in dem Format, mit dem es mit dem Befehl docker save exportiert wird. Man kann diese Formate auch kombinieren, um den Unterschied zwischen einer lokalen Version eines Images und einer Remote-Version zu berechnen. Dies kann nützlich sein, wenn man mit neuen Builds eines Images experimentiert, das noch nicht bereit, ist gepusht zu werden. container-diff unterstützt Image-Tarballs und das Registry-Protokoll nativ, sodass es auch in Umgebungen ohne Docker-Daemon laufen kann.

Zusätzlich zum Vergleich zweier Images kann container-diff ein einzelnes Image auch allein analysieren. Dadurch kann der Anwender einen schnellen Überblick über Informationen zu einem Image erhalten, zum Beispiel zur Installation von Paketen auf System- und Sprachebene und den Inhalt des Dateisystems.

Das Tool unterstützt derzeit Python- und Node.js-Pakete, die über pip oder npm installiert wurden, sowie den Vergleich von Image-Dateisystemen und Docker-History. In Zukunft möchten die Entwickler aber mehr Sprachen und Laufzeitumgebungen unterstützen, einschließlich Java, Go und Ruby.

container-diff liegt auf GitHub bereit. Einen How-to-Guide gibt es hier. Das Tool steht unter einer Apache Licence Version 2.0.

Der Beitrag Neues Tool container-diff vergleicht Container-Images ist auf entwickler.de erschienen.

Silex is (almost) dead, long live my-lex

SymfonyCon is happening in Cluj and on Thursday the keynote by Fabien Potencier announced some important changes. One of the most important announcements was the EOL of Silex in 2018.

EOL next year for Silex! #SymfonyCon ( -@gbtekkie)


Silex has been and is still an important player in the PHP ecosystem. It has played an extremely important role in the Symfony ecosystem as it showed many Symfony developers that there was more than just the full Symfony stack. It was also one of the first microframeworks that showed the PHP community the power of working with individual components, and how you can glue those together to make an extremely powerful foundation to build upon which includes most of the best practices.

Why EOL?

Now I wasn't at the keynote so I can only guess to the reasons, but it does make sense to me. When Silex was released the whole concept of taking individual components to build a microframework was pretty new to PHP developers. The PHP component ecosystem was a lot more limited as well. A huge group of PHP developers was used to working with full stack frameworks, so building your own framework (even with components) was by many deemed to be reinventing the wheel.

Fastforward to 2017 and a lot of PHP developers are by now used to individual components. Silex has little to prove on that topic. And with Composer being a stable, proven tool, the PHP component ecosystem growing every day and now the introduction of Symfony Flex to easily setup and manage projects maintaining a seperate microframework based on Symfony components is just an overhead. Using either Composer or Symfony Flex, you can set up a project similar to an empty Silex project in a matter of minutes.


I have been a happy user of Composer with individual components for a while now. One of my first projects with individual components even turned into a conference talk. I'll update the talk soon, as I have since found a slightly better structure, and if I can make the time for it, I'll also write something about this new and improved structure. I've used it for a couple of projects now and I'm quite happy with this structure. I also still have to play with Symfony Flex. It looks really promising and I can't wait to give it a try.

So the "my-lex" in the title, what is that about? It is about the choice you now have. You can basically build your own Silex using either Composer and components or Symfony Flex. I would've laughed hard a couple of years ago if you'd said to me that I would say this but: Build your own framework!

Is Silex being EOL'ed a bad thing?

No. While it is sad to see such an important project go I think by now the Symfony and PHP ecosystems have already gone past the point of needing Silex. Does this mean we don't need microframeworks anymore? I won't say that, but with Slim still going strong the loss of Silex isn't all that bad. And with Composer, Flex and the huge amount of PHP components, you can always build a microframework that suits your specific needs.

The only situation where Silex stopping is an issue is for open source projects such as Bolt (who already anticipated this that are based on Silex, as well as of course your personal or business projects based on Silex. While this software will keep on working, you won't get new updates of the core of those projects, so eventually you'll have to put in effort to rewrite it to something else.

Post Selected Items to:

Showing 10 items of 373

home  •   advertising  •   terms of service  •   privacy  •   about us  •   contact us  •   press release design by Popshop •   © 1999-2017 NewsKnowledge