-1

I'm currently developing a PHP webservice that will be consumed by the Document Management Software DocuWare. Right now it mostly consists of reading the database and getting a value by their ID. The folder for the webservice consists of the following folders:

dataLayer

ServiceLayer

frontEndLayer

lib (nusoap)

samples (nusoap)

In dataLayer I have client.php

<?php
    require "../lib/nusoap.php";
        $url="http://localhost/service/dataLayer/service.php";
        $client=new nusoap_client($url."?wsdl",'wsdl');
        $code=$_POST[idCourse];
        $courses=$client->call('listCourses',array("code"=>$code),'uri:'.$url,'uri:'.$url.'/listCourses');
        if($client->fault){
        echo "Error";
        print_r($courses);
        }else{
            if($client->getError()){
                echo '<b>Error: '.$client->getError().'</b>';
            }else{
                print_r($courses);
            }
        }
?>

and connection.php

<?php
    require(../dataLayer/auth.php);
    function connect(){
        $conn = mysql_connect($host,$hostuser,$hostpw)or die(mysql_error());
        mysql_select_db("tickets",$conn);
        return($conn);
    }
?>

With that in mind; I made the serviceLayer which consists of a simple "service.php" file.

<?php
    include('../lib/nusoap.php');
    require ('../dataLayer/connection.php');
    $url = "http://localhost/service/dataLayer/service.php";
    $server->configureWSDL("consult",$url);
    $server->wsdl->schematargetNamespace=$url;
    $server->soap_defencoding='utf-8';
    $server->register;
             ("listcourses",
             array("code"=> "xsd:string"),
             array("return => "xsd:string"), $url
             );

    function listcourses($code){
        $conn=connect();
        if($code!=0){
            $sql="select id from ticket where id='$code'";
        }else{
            $sql="select id from ticket";
        }
        $rs=mysql_query($sql,$conn);
        $i=0;
        $chainset="<?xml version='1.0' encoding='utf-8'?>";
        if($rs!=null){
            $chainset.="<courses>";
            if(mysql_num_rows($rs)>0){
                while ($row = mysql_fetch_row($rs)){
                    $chainset.="<course>";
                    $chainset.="<br>";
                    $chainset.="<code>".row[0]."<code>";
                    $chainset.="<br>";
                    $chainset.="<name>".row[1]."<name>";
                    $chainset.="</course";
                    $i++;
                }
            }else{
                $chainset.="<error>No data available</error>"
            }
            $chainset.="</course";
        }else{
            $chainset.="<error>Error".mysql_error()."</error>";
        }
        $repl=new soapval('return','xsd:string',$chainset);
        return $repl;
    }
    if(!isset($HTTP_RAW_POST_DATA))
    $HTTP_RAW_POST_DATA=file_get_contents('php://input');
    $server->service($HTTP_RAW_POST_DATA);
?>

Theorically everything is OK. I made the front end layer, which is just a simple form.

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
        <script src="jquery/jquery2.1.js"></script>
        <script>
            function sendForm(form){
                document.getElementById(form).submit();
            }
        </script>
    </head>
    <body>
        <div class="container">
            <section id="content">
                <form id="login" name="login" method="POST" action="../dataLayer/client.php">
                    <div>
                        <label for="idCourse">Course</label>
                    </div>
                    <br>
                    <div>
                        <input type="text" maxlength="2" id="idCourse" name="idCourse" placeholder="Example - 76" required="required" size="10"/>
                    </div>
                    <input type="reset" name="button" value="Reset"/>
                    <input type="submit" name="button" value="Submit"/>
                </form>
            </section>
        </div>
    </body>
</html>

And I get the following error:

( ! ) Notice: Use of undefined constant idCourse- assumed 'idCourse' in C:\wamp64\www\service\dataLayer\client.php on line 5 Call Stack

Time Memory Function Location 1 0.0003 245144 {main}( ) ...\client.php:0 Error: wsdl error: XML error parsing WSDL from

http://localhost/service/dataLayer/service.php?wsdl on line 2:

Invalid document end

I don't know what's wrong since everything seems to be fine.

4
  • 2
    $code=$_POST[idCourse]; should be $code=$_POST['idCourse']; in client.php - this is simply a typo error. You're passing in NULL which is effecting everything else. Commented Nov 5, 2018 at 19:43
  • Thanks. That worked, however I had already moved to PDO to avoid SQL Injection, and with PDO it worked flawlessly. Commented Nov 5, 2018 at 20:04
  • and your question is? Commented Nov 5, 2018 at 20:09
  • No further questions with this one. Commented Nov 5, 2018 at 20:10

1 Answer 1

0

As pointed by Jaquarh, made the following correction:

In client.php:

$code=$_POST['idCourse']; 
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.