Beste,
Hoe kan ik het beste een POST request versturen via PHP naar een PHP script op een andere server?
Dit heb ik nodig om een serial te checken.
Lars
Beste,
Hoe kan ik het beste een POST request versturen via PHP naar een PHP script op een andere server?
Dit heb ik nodig om een serial te checken.
Lars
http://nl2.php.net/manual/en/function.curl-setopt.php
Zie het tweede voorbeeld.
Nee, het werkt alleen als de cURL library is geïnstalleerd. Op veel servers is dat helaas niet het geval.
Kun je echt niet overstappen op GET requests?
@Killingdevil,
Dit is mogelijk, maar is wel minder veilig
Ik had al wel gekeken naar een HTTP Request, maar daarvoor moet je wel iets installeren (een .dll ofzo).Ik had bij targetpay wel een http class, misschien kan ik die gebruiken..
Maar, wat kan dan wel met een GET request?
Lars
[func]file_get_contents[/func] werkt prima als je een GET request doet. En dat GET minder veilig is als POST is regelrechte onzin... Of je nu in je HTTP header POST of GET zet, dat maakt helemaal niks uit.
@killingdevil,
Ik probeer het hier lokaal, en hij blijft maar laden :s
Dit is het script:
<?php
if(isset($_POST['submit'])){
$con = file_get_contents("http://planemania.nl/gs/check_serial.php?serial=".$_POST['serial']."&login=".$_POST['login']."&logincode=".$_POST['logincode']."&server=".$_SERVER['SERVER_ADDR']);
$site = explode(",", $con);
if($site[0] == "OK"){
echo '<font color="green"><b>Serial bevestigd.</b><br /></font><br />
<table>
<tr>
<td>Serial:</td>
<td>'.$_POST['serial'].'</td>
</tr>
<tr>
<td>Gebruikersnaam:</td>
<td>'.$_POST['login'].'</td>
</tr>
<tr>
<td>Logincode:</td>
<td>'.$_POST['logincode'].'</td>
</tr>
</table><br />
U kunt nog <b>'.$site[1].' websites</b> registreren.<br />
Websites verwijderen kan op <a href="http://grootscripting.nl">http://grootscripting.nl</a>
';
} else if($site[0] == "ERROR1"){
echo '<font color="red">U heeft al 5 websites geregistreerd, verwijder een of meerdere websites op: <a href="http://grootscripting.nl">http://grootscripting.nl</a></font>';
} else{
echo '<font color="red">Dit is geen geldige serial, gebruikersnaam of logincode.</font>';
}
} else{
echo '
<form method="post">
<table>
<tr>
<td>Serial:</td>
<td><input type="text" name="serial" value="XXXX-XXXX-XXXX-XXXX" size="20"></td>
</tr>
<tr>
<td>Gebruikersnaam:</td>
<td><input type="text" name="login" value="" size="15"></td>
</tr>
<tr>
<td>Logincode:</td>
<td><input type="text" name="logincode" value="XXXXXX-XXXXXX" size="25"></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="submit" value="Activate"></td>
</tr>
</table>
</form>
';
}
?>
Toon Meer
Op de server staat dit:
<?php
$server = "SECRETSERVER";
$login = "SECRETLOGIN";
$password = "SECRETPASS";
$database = "SECRETDATABASE";
$con = mysql_connect($server, $login, $password);
mysql_select_db($database, $con);
if(isset($_GET['serial'])){
$res = mysql_query("SELECT login, serial, logincode, max FROM gs_buyed WHERE login='".$_GET['login']."' AND serial='".$_GET['serial']."' AND logincode='".$_GET['logincode']."'");
$sel = mysql_fetch_array($res);
if(mysql_num_rows($res) == 1){
$res2 = mysql_query("SELECT login, server, serial, logincode FROM gs_using WHERE login='".$_GET['login']."' AND serial='".$_GET['serial']."' AND logincode='".$_GET['logincode']."' AND server='".$_GET['server']."'");
if(mysql_num_rows($res2) < $sel['max']){
echo 'OK,'.$sel['max']-mysql_num_rows($res2);
mysql_query("INSERT INTO gs_using (login, server, serial, logincode) VALUES ('".$_GET['login']."', '".$_GET['server']."', '".$_GET['serial']."', '".$_GET['logincode']."')");
} else{
echo 'ERROR2,'.$sel['max'];
// Server maximum is reached.
}
} else{
echo 'ERROR1,0';
// Serial didn't exist.
}
}
?>
Toon Meer
Nieuwe reactie samengevoegd met originele reactie op 26.08.10 19:17:25:
Het is opgelost.
Op andere sites werkt het wel
Nu nog 2 vragen aan jullie:
1) Wat is de makkelijkste, en altijd al geinstalleerde (of via class die ik erbij kan leveren) encodeer programma?
Dus bijv. zend ofzo, waarmee ik dus php bestanden kan encoderen?
2) Hoe kan ik een website identificeren, dus wat is uniek per website / PHP installatie?
Via $_SERVER['SERVER_ADDR'] kan ik het server IP opvragen, echter is dat bij bijv. localhost altijd hetzelfde (127.0.0.1) wat ik dus liever niet wil.
Ik wil dan dus het IP van het huishouden / domein waar het staat geregistreert.
Dus wat je met de BAT "ping google.nl" als IP krijgt.
Lars
Op je 1e vraag kan ik je antwoord geven, gewoon een class.
1) Vertel ons eerst eens wat het precieze doel van het script is, dat kan het wel eens makkelijker maken.
2) Heel simpel: Op jou server kijk je wat de waarde van $_SERVER['REMOTE_ADDR'] is, en dat is de cliënt waar je mee communiceert.
Het systeem is hiervoor nodig:
Ik wil een portfolio maken met een klantensysteem.
Eenmaal ingelogd in dit systeem kun je kleine scripts kopen door mij geschreven (login systeem etc.).
Je koopt hier een licensie voor, voor 5 websites (je mag hem op 5 sites online hebben).
In dit klantensysteem kan je onbeperkt de software downloaden.
Als je het vervolgens installeert, vraagt het om resp. je login, je klanten serial en de product serial.
Het product serial krijg je per aankoop.
Als deze gegevens juist zijn kan je het systeem installeren op jouw server.
Indien dit niet juist is, kan je het niet registreren.
Dan is er in de config van de scripts ook een check die controleert of de website waar het script op staat, al is geinstalleerd.
Zo niet -> error, anders pagina weergeven.
Nu wil ik alle scripts encoderen, zodat niemand deze checks eruit kan halen.
En dus zoek ik een veilig systeem, het liefste een class, of iets wat standaard in PHP zit ingebakken, om de geëncodeerde scripts de decoderen en dus zegmaar weer te geven in PHP, maar je kan de code dus als site eigenaar niet zien.
Zoiets als Zend denk ik, alleen zit dat al standaard in PHP, of is hier een class voor die ik kan gebruiken?
Anders moet iedereen persee iets installeren, en dat wil ik liever niet.
Het moet meteen te gebruiken zijn.
Op vraag 2)
Als dus 1 persoon het systeem op 2 XAMPP servers installeert, krijg ik dus 2x een 127.0.0.1 IP erop.
En ik wil gewoon het "outside" ip van die persoon hebben, i.p.v. 127.0.0.1.
Dan gebruik ik $_SERVER['SERVER_ADDR'].
Lars
Heb je nog geen account? Registreer je nu en word deel van onze community!