הרשם שאלות ותשובות רשימת חברים לוח שנה הודעות מהיום

חזור   הוסטס - פורום אחסון האתרים הגדול בישראל > עיצוב גראפי, תכנות על כל שפותיו וקידום ושיווק אתרים > פורום תיכנות

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 27-02-09, 05:17   # 1
Jonathan Zeierman
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Jun 2007
הודעות: 1,003

Jonathan Zeierman לא מחובר  

בעיה ב-session או בפונקציה?

שלום לכולם.
אני מנסה לפתח מין פאנל כזה שמתחבר לשרת מרוחק ויוצר תיקייה עם הפונקציה SSH2.
הצלחתי לעשות את זה אבל אני רוצה לעשות שכאשר התחברנו בהצלחה המשתמש כביכול מועבר לדף ששם הוא בוחר מה להתקין [הצלחתי לעשות את זה] אך כשהוא מגיע ליצירת התיקייה ישנה שגיאה כזו:
קוד:
Warning: ssh2_connect() expects parameter 2 to be long, string given in /home/user/domains/domain.com/public_html/ssh/ventrilo.php on line 12

Warning: ssh2_auth_password() expects parameter 1 to be resource, boolean given in /home/user/domains/domain.com/public_html/ssh/ventrilo.php on line 14
הקודים הם כאלו:
index.php
PHP קוד:
<?php
//-----------------------------------------------
// START PHP CODE
//-----------------------------------------------
//-----------------------------------------------
// הכללת קבצים מצורפים
//-----------------------------------------------
include("config.php");
include(
"session.php");
//-----------------------------------------------
// הגנה על הדף רק בעל שם משתמש וסיסמא יכול לגשת לדף
//-----------------------------------------------
if ($_SERVER["PHP_AUTH_USER"] != "root" && $_SERVER["PHP_AUTH_PASSWORD"] != "root")
{
     
header("WWW-Authenticate: Basic realm=\"Protected By Yoni!\"");
     
header("HTTP/1.0 401 Unauthorized");
     exit(
"<title>Access Denied-הגישה נדחתה</title><center><h1><font color=red>Access Denied-הגישה נדחתה</font></h1></center>");
}

if (isset(
$_POST["send"])) //אם לחצנו על הכפתור התחבר אז הוא יציג לנו את הקוד הבא
{
//-----------------------------------------------
// ביצוע התחברות לשרת המרוחק
//-----------------------------------------------
$ssh_connection=ssh2_connect("$ip""$port"); //פונקציית התחברות לשרת המרוחק

if (ssh2_auth_password($ssh_connection"$user""$pass")) //פונקציית התחברות עם שם משתמש וסיסמא
echo ('<center><p dir="rtl">ההתחברות לשרת המרוחק בוצעה בהצלחה!</p></center>');
echo (
'<meta http-equiv="Refresh" content="3; URL=install.php">');
}
//-----------------------------------------------
// END PHP CODE
//-----------------------------------------------
?>
<!-- Login To Server HTML Code START -->
<html>
<body>
<head>
<title>Connection to remote server - התחברות לשרת מרוחק</title>
<link type="text/css" rel="stylesheet" href="ssh.css"/>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1255">
</head>
<form method="post" action="?login">
<div dir="rtl" align="center">
<center>
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#C0C0C0" width="15%">
<tr>
<td width="40%">פורט/PORT:</td>
<td width="60%"><input name="port" size="5" value="22"><span lang="he"> בררת 
מחדל של </span>SSH</td>
</tr>
<tr>
<td width="40%">אייפי/IP:</td>
<td width="60%"><input name="ip" size="30"></td>
</tr>
<tr>
<td width="40%">שם משתמש/USER:</td>
<td width="60%"><input name="user" size="30"></td>
</tr>
<tr>
<td width="40%"><span lang="he">סיסמא/</span>PASS:</td>
<td width="60%"><input type="password" name="pass" size="30"></td>
</tr>
<tr>
<td width="100%" colspan="2">
<center>
<input type="submit" value="התחבר" name="send">
</center>
</td>
</tr>
</table>
</center>
</div>
</form>
</body>
</html>
<!-- Login To Server HTML Code END -->
config.php
PHP קוד:
<?php
//-----------------------------------------------
// START PHP CODE
//-----------------------------------------------
//-----------------------------------------------
// הגדרת הגדרות לשרת מרוחק ע"י כתיבת המשתמש
//-----------------------------------------------
$port $_POST["port"]; //פורט 22 בדרך כלל קבוע אך ניתן לשנות אותו פי הצורך
$ip $_POST["ip"]; //הגדרת אייפי לשרת המרוחק
$user $_POST["user"]; //הגדרת שם משתמש לשרת המרוחק
$pass $_POST["pass"]; //הגדרת סיסמא לשרת המרוחק
//-----------------------------------------------
// END PHP CODE
//-----------------------------------------------
?>

ventrilo.php

PHP קוד:
<?php
//-----------------------------------------------
// START PHP CODE
//-----------------------------------------------
//-----------------------------------------------
// הכללת קבצים מצורפים
//-----------------------------------------------
include("config.php");
include(
"session.php");
if (isset(
$_POST["create"])) //אם לחצנו על הכפתור הוא יציג לנו את הקוד הבא
{
$ssh_connection=ssh2_connect("$ip""$port"); //פונקציית התחברות לשרת המרוחק

if (ssh2_auth_password($ssh_connection"$user""$pass")) //פונקציית התחברות עם שם משתמש וסיסמא
$sftp ssh2_sftp($ssh_connection);
ssh2_sftp_mkdir($sftp'$_POST["new_folder"]');
}
//-----------------------------------------------
// END PHP CODE
//-----------------------------------------------
?>
<!-- Create a folder HTML Code START -->
<html>
<body>
<head>
<title>Welcome to install a ventrilo server - ברוך הבא להתקנת שרת ונטרילו</title>
<link type="text/css" rel="stylesheet" href="ssh.css"/>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1255">
</head>
<form method="post" action="?create_new_folder">
<div dir="rtl" align="center">
<center>
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#C0C0C0" width="15%">
<p align="center"><span lang="he"><font size="5">התקנת שרת ונטרילו</font></span></p>
<tr>
<td width="40%"><span lang="he">שם התיקייה:</span></td>
<td width="60%"><input name="new_folder" size="15"></td>
</tr>
<tr>
<td width="100%" colspan="2">
<center>
<input type="submit" value="צור" name="create">
</center>
</td>
</tr>
</table>
</center>
</div>
</form>
</body>
</html>
<!-- Create a folder HTML Code END -->
install.php
PHP קוד:
<?php
//-----------------------------------------------
// START PHP CODE
//-----------------------------------------------
//-----------------------------------------------
// הכללת קבצים מצורפים
//-----------------------------------------------    
include("config.php");
include(
"session.php");
if (isset(
$_POST['check_if_press']) && $_POST['check_if_press'] == "הרץ"//אם לחצנו על הכפתור הראה דף את דף ההרצה
$event $_POST['event']; //משתנה כללי
if ($event=='שרת ונטרילו')
{
echo (
'<center><p dir="rtl">בחרת להתקין שרת ונטרילו, הינך מועבר...</p></center>');
echo (
'<meta http-equiv="Refresh" content="3; URL=ventrilo.php">');
}
//-----------------------------------------------
// EMD PHP CODE
//-----------------------------------------------
?>
<!-- Run Server HTML Code START -->
<html>
<head>
<title>Pleas choose a installtion - אנא בחר שרת להתקנה</title>
<link type="text/css" rel="stylesheet" href="ssh.css"/>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1255">
</head>
<body>
<p align="center"><span lang="he"><font size="5">ברוך הבא, אנא בחר שרת להתקנה</font></span></p>
<form action="?run" method="post">
<p align="center" dir="rtl">
<select name="event">
    <option value="">אנא בחר שרת להרצה</option>
    <option value="שרת ונטרילו">שרת ונטרילו</option>
</select>
<br/>
<input type="submit" name="check_if_press" value="הרץ"/>
</font>
</p>
<br>
<br>
</form>
</body>
</html>
<!-- Run Server HTML Code END -->
session.php
PHP קוד:
<?php
//-----------------------------------------------
// START PHP CODE
//-----------------------------------------------
session_start();
include(
"config.php");
$_SESSION["port"] = $_POST["port"];
$_SESSION["ip"] = $_POST["ip"];
$_SESSION["user"] = $_POST["user"];
$_SESSION["pass"] = $_POST["pass"];
//-----------------------------------------------
// END PHP CODE
//-----------------------------------------------
?>
מה עושים? אני דיי נואש.
יוני.
__________________
יונתן.
אימייל: jonathan@zeierman.net
  Reply With Quote
ישן 27-02-09, 12:35   # 2
daMn
הוסטסניון
 
מיני פרופיל
תאריך הצטרפות: Mar 2007
גיל: 34
הודעות: 2,050

daMn לא מחובר  

שים לב בקובץ ventrilo.php שלא עטפת בסוגריים מסולסלות בif של הפונקציה ssh2_auth_password ולכן הוא בעצם לא מגיע לפונקציה ssh2_sftp_mkdir.
ועוד הערה קטנה אלייך, שאתה שולח משתנים בפונקציות אין צורך לעטוף אותם במרכאות כדוגמא "$str" אלא פשוט $str, כנ"ל לגבי משתני מערך כמו שעשית עם הPOST.
__________________
"חינוך למדעי המחשב לא יכול להפוך אף אחד למתכנת מומחה יותר מאשר לימוד על מברשות וצבעים יכול להפוך מישהו לצייר מיומן."
(אריק ס. ריימונד)
  Reply With Quote
ישן 27-02-09, 13:37   # 3
Cyeo
חבר על
 
מיני פרופיל
תאריך הצטרפות: Oct 2007
הודעות: 816

Cyeo לא מחובר  

שים לב - אתה מבצע פה 2 מעברים של עמודים.
מאינדקס לINSTALL ומINSTALL לVENTRILO.
ה$_POST שעשית באינדקס יימחק במעבר בין INSTALL לוונטרילו, והעובדה שאתה שומר את הנתונים רק כשאתה מגיע לventrilo.php (כשהם כבר מחוקים) גורמת לפונקציה ssh2_connect לקבל ערכים ריקים ולפלוט שגיאות.


כאן הטעות שלך.
  Reply With Quote
ישן 27-02-09, 17:16   # 4
SniR-S
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Aug 2008
הודעות: 546

SniR-S לא מחובר  

אגב, session_start(); אמור להיות מעל הכל !
הכי טוב זה לשים אותו נגיד ב config.php כי ברוב הדפים שולפים את הקובץ הזה (הגדרות..)
  Reply With Quote
ישן 27-02-09, 18:04   # 5
Jonathan Zeierman
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Jun 2007
הודעות: 1,003

Jonathan Zeierman לא מחובר  

אז איך אני שומר על הנתונים? בין המעברים?
__________________
יונתן.
אימייל: jonathan@zeierman.net
  Reply With Quote
ישן 27-02-09, 18:31   # 6
Cyeo
חבר על
 
מיני פרופיל
תאריך הצטרפות: Oct 2007
הודעות: 816

Cyeo לא מחובר  

אתה יכול לשמור אותם לקובץ TEMP ואחרי השימוש למחוק את הקובץ,
אתה יכול פשוט לעשות INCLUDE ל config.php שלך ישר באינדקס וככה הנתונים יישמרו בו במקום לעשות את האינקלוד בקובץ ventrilo.php
אבל קח בחשבון - אם אתה עושה את זה, ברגע שתעשה לאותו קובץ אינקלוד גם בventrilo.php הנתונים ייתאפסו שוב (כי אצלך הקריאה מתוך config.php זה לא רק קריאה אלא גם שמירת נתונים).

אני במקומך הייתי משתמש בSESSIONS - ברגע שבנאדם מתחבר לשמור אצלו בSESSION את הנתונים שלו - אייפי, שם משתמש, סיסמא, שם תיקיה, איזה שרת להתקין, וכל זה, ואז שולף אותם בדף שממש צריך להתקין.

שימוש בקבצים להגדרות דינמיות זה לא טוב.. תעיף תעמודים config.php ו- sessions.php ותעשה את ההגדרות בדפי קודים עצמם.

Last edited by Cyeo; 27-02-09 at 18:42..
  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 


חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


כל הזמנים הם GMT +2. הזמן כעת הוא 07:55.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ